AFNetworking Error Domain= NSPOSIXErrorDomain Code= 12 "Der Vorgang konnte nicht abgeschlossen werden. Speicher kann nicht zugeordnet werden

StackOverflow https://stackoverflow.com/questions/8875122

Frage

Ich sende viele Bilddateien über AfNetworking an einen Rails-Server.Bei Edge und manchmal 3G wird folgende Fehlermeldung angezeigt: Error Domain= NSPOSIXErrorDomain Code= 12 "Der Vorgang konnte nicht abgeschlossen werden. Speicher kann nicht zugeordnet werden."

Dies ist der Code, mit dem ich die Dateien sende: https://gist.github.com/cc5482059ae3023bdf50

Gibt es eine Möglichkeit, dies zu beheben?

Online schlagen einige Leute vor, dass eine Problemumgehung darin besteht, die Dateien zu streamen.Ich konnte kein Tutorial zum Streamen mehrerer Dateien mit AFNetworking finden.Wie kann ich das machen?

War es hilfreich?

Lösung

Wie groß sind die Bilder?Und wie viele versuchen Sie zu senden?

Ich kann anscheinend keinen einfachen Weg finden, einen NSInputStream mithilfe von AFNetworking zu implementieren, aber es gibt definitiv eine Sache, die Sie versuchen sollten, nämlich zu vermeiden, dass große Objekte in den Autorelease-Pool gestellt werden.Wenn Sie große NSData-Instanzen in einer for-Schleife erstellen und diese in den Autorelease-Pool gehen, bleibt der gesamte Speicher so lange erhalten, wie die Schleife dauert.Dies ist eine Möglichkeit, es zu optimieren:

for (int i=0; i<[self.sImages count]; i++) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSData *imageData = UIImageJPEGRepresentation([self.sImages objectAtIndex:i], 0.7);
    [formData appendPartWithFileData:imageData name:@"pics[]" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
    pool drain];
}

Oder wenn Sie LLVM3 verwenden:

for (int i=0; i<[self.sImages count]; i++) {
    @autoreleasepool {
        NSData *imageData = UIImageJPEGRepresentation([self.sImages objectAtIndex:i], 0.7);
        [formData appendPartWithFileData:imageData name:@"pics[]" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
    }
}

Andere Tipps

Ich weiß, dass diese Frage schon eine Weile her ist, aber ich muss nur meine zwei Cent dafür geben.

Nachdem ich den größten Teil der Woche damit verbracht habe, dieses Zeug herauszufinden, bin ich gerade hier:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top