AFNetworking Error Domain= NSPOSIXErrorDomain Code= 12 "Impossibile completare l'operazione. Impossibile allocare memoria

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

Domanda

Sto inviando molti file immagine tramite AfNetworking a un server Rails.Su edge e talvolta 3G ricevo questo errore: Error Domain= NSPOSIXErrorDomain Code= 12 "L'operazione non può essere completata. Impossibile allocare memoria".

Questo è il codice che sto utilizzando per inviare i file: https://gist.github.com/cc5482059ae3023bdf50

C'è un modo per risolvere questo problema?

In linea alcune persone suggeriscono che una soluzione alternativa sarebbe lo streaming dei file.Non sono riuscito a trovare un tutorial sullo streaming di più file utilizzando AFNetworking.Come posso farlo?

È stato utile?

Soluzione

Quanto sono grandi le immagini?E quanti stai cercando di inviare?

Non riesco a trovare un modo semplice per implementare un NSInputStream utilizzando AFNetworking, ma c'è sicuramente una cosa che dovresti provare, ovvero evitare di inserire oggetti di grandi dimensioni nel pool di rilascio automatico.Quando crei grandi istanze NSData all'interno di un ciclo for, e quelle stanno andando nel pool di rilascio automatico, tutta quella memoria rimane in giro per tutto il tempo che dura il ciclo.Questo è un modo per ottimizzarlo:

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];
}

Oppure, se utilizzi LLVM3:

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"];
    }
}

Altri suggerimenti

So che è passato un po 'di tempo da quando è stata posta questa domanda, ma devo solo dare i miei due centesimi sulla questione.

Dopo aver passato la parte migliore della settimana a cercare di capire queste cose, ecco dove sono adesso:

  • Questo problema si verifica su un vecchio iPhone 4 leggermente sbattuto con iOS 5.1.1
  • Non riesco a riprodurlo su un iPhone 4S non sbattuto con lo stesso iOS 5.1.1

Potrebbe essere a causa di una rete difettosa da parte dell'hardware del telefono stesso o potrebbe essere dovuto alla necessità di limitare la larghezza di banda (o solo a un bug in NSURLConnection):

http://aws.amazon.com/articles/0006282245644577

https://forums.dropbox.com/topic.php?id=25351

Errore POSIX 12 (" Impossibile allocare memoria ") durante il caricamento di file da un iPhone

Sarei passato a ASIHTTPRequest ma non è più mantenuto, quindi ora vale la pena implementarlo. Forse dovrei ancora provare AFNetworking, ma sto davvero iniziando a pensare che questo sia un problema che è già stato risolto in iOS (o potrebbe essere un iPhone scadente nel mio caso).

Ma non riesco a trovare una spiegazione semplice per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top