ios - NSData 图像在内存中的权重是否与打开的图像一样大?

标签 ios objective-c cocoa-touch memory-management

我正在从我的 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/

相关文章:

iOS开发关于NSOperationQueue

ios - 在 TableView 末尾显示导航栏

ios - 按月将带有 NSDate 对象的 NSArray 排序到 NSDictionary

objective-c - UIAlert View Objective C - 打开应用商店链接

ios - 应用程序仅在真实设备上启动时崩溃

ios - 堆栈 View ScaleAspectFit 蒙版在 Swift 中调整大小

ios - 使用一对多关系对 fetchRequest 进行排序(核心数据)?

objective-c - 为什么分配时需要临时变量?

ios - 登录 Twitter 有时会失败

iphone - iOS 应用程序无法在 iOS 6 或更低版本上运行