AFNetworking Error Domain= NSPOSIXErrorDomain Code= 12 "No se pudo completar la operación. No se puede asignar memoria

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

Pregunta

Estoy enviando muchos archivos de imagen a través de AfNetworking a un servidor Rails.En el borde y, a veces, en 3G, aparece este error: Error Domain= NSPOSIXErrorDomain Code= 12 "No se pudo completar la operación. No se puede asignar memoria".

Este es el código que estoy usando para enviar los archivos: https://gist.github.com/cc5482059ae3023bdf50

¿Hay alguna forma de solucionar este problema?

En línea, algunas personas sugieren que una solución alternativa sería transmitir los archivos.No he podido encontrar un tutorial sobre la transmisión de múltiples archivos usando AFNetworking.¿Cómo puedo hacer esto?

¿Fue útil?

Solución

¿Qué tamaño tienen las imágenes?¿Y cuántos estás intentando enviar?

Parece que no encuentro una manera fácil de implementar un NSInputStream usando AFNetworking, pero definitivamente hay una cosa que debes probar, que es evitar poner objetos grandes en el grupo de liberación automática.Cuando está creando grandes instancias de NSData en un bucle for, y esas van al grupo de liberación automática, toda la memoria se queda mientras dure el bucle.Esta es una forma de optimizarlo:

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

O, si está utilizando 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"];
    }
}

Otros consejos

Sé que ha pasado un tiempo desde que se hizo esta pregunta, pero solo tengo que dar mi granito de arena al respecto.

Después de pasar la mayor parte de la semana tratando de resolver esto, aquí es donde estoy ahora:

  • Este problema me ocurre con un iPhone 4 antiguo ligeramente golpeado con iOS 5.1.1
  • Parece que no se puede reproducir en un iPhone 4S que no esté dañado y que ejecute el mismo iOS 5.1.1

Puede deberse a una red defectuosa por parte del hardware del teléfono o puede deberse a la necesidad de reducir el ancho de banda (o simplemente a un error en NSURLConnection):

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

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

error POSIX 12 (" No se puede asignar memoria ") mientras se cargan archivos desde un iPhone

Me habría movido a ASIHTTPRequest pero ya no se mantiene, por lo que ahora vale la pena implementarlo. Tal vez debería probar AFNetworking, pero realmente estoy empezando a pensar que este es un problema que ya se ha solucionado en iOS (o puede ser un iPhone de mala calidad en mi caso).

Pero por mi vida no puedo encontrar una explicación simple para esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top