Jon*_*rft 2 cocoa-touch memory-management objective-c ios
我正从我的iOS应用程序向我的服务器上传功能.我现在正在构建最好的方法,并认为我的方法会遇到麻烦.
我已经超过20张图片,我想用1个请求发送AFmultiparFormData在AFNetworking与文字,是有关该图片的信息.
现在......我知道如何在里面创建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)
您不应该将所有图像数据放入NSDictionary,因为这可能会导致内存问题.
相反,为您的文件创建一个字典或URL数组,然后使用AFNetworking multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock:和AFMultipartFormData protocol特别是appendPartWithFileURL:name:fileName:mimeType:error:.这样,所有图像的图像数据一次不会全部存储在内存中,而是从磁盘流式传输.巨大的性能提升.