AFNetworking错误域= NSPOSIXErrorDomain代码= 12“无法完成操作无法分配内存

问题描述:

我通过AfNetworking发送大量的图像文件到Rails服务器上边缘,有时3G我得到这个错误:错误域= NSPOSIXErrorDomain代码= 12“该操作无法完成。 。无法分配内存”AFNetworking错误域= NSPOSIXErrorDomain代码= 12“无法完成操作无法分配内存

这是我使用发送文件的代码:https://gist.github.com/cc5482059ae3023bdf50

有没有办法解决这个问题

网上有些人认为,一个解决方法是将流?的文件。我一直没能找到有关流媒体使用AFNetworking多个文件教程。我怎样才能做到这一点?

有多大的图像?有多少是你想送?

我似乎不能鳍d一个简单的方法,使用AFNetworking来实现NSInputStream,但绝对有一件事你应该尝试,这是避免把大对象放在自动释放池中。当你创建一个大的NSData实例时,在for循环中,并且这些实例将进入autorelease池,只要循环持续,所有内存都会一直存在。这是一个方式来优化它:

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

或者,如果你使用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"]; 
    } 
} 

我知道它已经有一段时间,因为这个问题被问,但我只是给我的两个关于此事的美分。

共度这个星期在这里想弄清楚这个东西出更好的一部分后的我在哪里现在:

  • 这个问题发生在我身上的轻微碰伤了旧iPhone 4运行iOS 5.1。 1
  • 似乎无法重现它在没有撞坏了iPhone 4S运行的iOS相同5.1.1

可能是因为手机硬件本身,也可能是对需要油门故障联网带宽(或者NSURLConnection中的一个错误):

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

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

POSIX error 12 ("Cannot allocate memory") while uploading files from an iPhone

我会搬到ASIHTTPRequest,但它不再保持,所以它现在的价值实现。也许我应该尝试AFNetworking,但我真的开始认为这是已经在iOS中修复的问题(或者在我的情况下可能是劣质iPhone)。

但我不能为我的生活找到一个简单的解释。