【发布时间】:2015-12-06 08:46:30
【问题描述】:
我的场景是,我使用 PhotoKit 从系统相册中选择一张照片并在我的UICollectionView 中呈现,然后将选定的照片 (UIImage) 传递给我的下一张 UIView 并以表单形式将其发送到远程服务器的NSData。
但是当我在发送之前放置断点以跟踪NSData 时,我发现UIImage 有分配内存的数据,而NSData 没有。
这里是获取UIImage 的代码(请注意我没有指定任何PHImageRequestOptions 对象):
NSMutableArray *images = @[].mutableCopy;
PHImageManager *manager = [PHImageManager defaultManager];
PHAsset *asset = _photoPickerCollectionView.pickedAsset;
CGSize targetSize = CGSizeMake(asset.pixelWidth*0.5, asset.pixelHeight*0.5);
[manager requestImageForAsset:asset targetSize:targetSize contentMode:PHImageContentModeAspectFill options:nil resultHandler:^(UIImage *result, NSDictionary *info) {
_nextView.pickedOne = result;
}];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
我将UIImage 转换为NSData,如下所示:
UIImage *image = _pickedOne;
NSData *imgData = UIImageJPEGRepresentation(image, imageQuality);
当我跟踪变量时,UIImage 包含如下数据:
但NSData 是nil 如下:
奇怪的是,如果我为PHImageManager 指定一个PHImageRequestOptions 对象来请求图像,那么NSData 就不会是nil。我不确定使用或不使用 PHImageRequestOptions 会发生什么变化以及为什么会产生如此大的差异。
更新:
我发现如果您将PHImageRequestOptions 指定为nil,那么默认选项将强制它异步获取照片,在我看来,这对于NSData 可能是不稳定的,所以当我指定options.synchronous = YES; 时它会起作用.
但在这种情况下,是否会导致任何保留循环或某些PhotoKit 对象不会被释放?
【问题讨论】:
标签: ios objective-c uiimage nsdata photokit