我正在从我的 iOS 应用程序向我的服务器执行上传功能。我现在正在设计执行此操作的最佳方法,并认为我的方法会遇到麻烦。
我有 20 多张图片,我想使用 AFNetworking
中的 AFmultiparFormData
在 1 个请求中发送,其中还有与该图片相关的文本信息。
现在...我知道如何创建包含大量信息的 NSDictionary
但从未在 NSData
中创建包含 20 张图像的 NSDictionary
格式化或试图一次上传多张照片。
问题是我不知道 NSData
图像是否会占用与图像一样多的内存空间。因此,我当时只能做 2/3(如果它们是全屏图像,但它们不是,但它只是一个任意测量点)
根据我所说的内容和下面的 seudo 代码,我可以这样做还是会耗尽内存?否则我会一个接一个地做。
// for loop that does this 20 times
UIImage* image = [UIImage imageNamed:myExercise.exercisePictureThumb];
NSData * exercisePictureThumb = UIImagePNGRepresentation(image1);
// add to dictionary recursively
最佳答案
您不应将所有图像数据放入 NSDictionary
,因为这可能会导致内存问题。
相反,创建文件 URL 的字典或数组,然后使用 AFNetworking 的 multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock:
和 AFMultipartFormData protocol
,特别是 appendPartWithFileURL:name:fileName:mimeType:error:
。这样一来,所有图像的图像数据就不会同时全部存储在内存中,而是从磁盘流式传输。巨大的性能提升。
关于ios - NSData 图像在内存中的权重是否与打开的图像一样大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947764/