NSData图像在内存中的重量与打开的图像一样多吗?

Jon*_*rft 2 cocoa-touch memory-management objective-c ios

我正从我的iOS应用程序向我的服务器上传功能.我现在正在构建最好的方法,并认为我的方法会遇到麻烦.

我已经超过20张图片,我想用1个请求发送AFmultiparFormDataAFNetworking与文字,是有关该图片的信息.

现在......我知道如何在里面创建NSDictionary大量信息,但从未创建过NSDictionary20个NSData格式的图像或尝试一次上传多张图片.

问题是我不知道NSData图像是否会占用与图像一样多的内存空间.因此,我当时只能做2/3(如果它们是全屏图像,它们不是,但它只是一个任意的测量点)

鉴于我所说的和下面的seudo代码,我可以这样做,还是我的内存不足?否则我会被留下来做1比1.

// for loop that does this 20 times
UIImage* image = [UIImage imageNamed:myExercise.exercisePictureThumb];
NSData * exercisePictureThumb = UIImagePNGRepresentation(image1);

// add to dictionary recursively
Run Code Online (Sandbox Code Playgroud)

Mis*_*Moo 5

您不应该将所有图像数据放入NSDictionary,因为这可能会导致内存问题.

相反,为您的文件创建一个字典或URL数组,然后使用AFNetworking multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock:AFMultipartFormData protocol特别是appendPartWithFileURL:name:fileName:mimeType:error:.这样,所有图像的图像数据一次不会全部存储在内存中,而是从磁盘流式传输.巨大的性能提升.