繁体   English   中英

剪切图像时iOS收到内存警告

[英]iOS Received Memory Warning when cutting image

拍照后我试图剪切图像。 在非视网膜设备上可以正常工作。 但是在Retina设备上收到了内存警告。 我认为当我注释掉图像时,剪切图像cuz时会有一些内存泄漏,没有问题。

码:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    CGSize imageSize = image.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat newDimension = 2360;
    CGFloat widthOffset = 20 * [[UIScreen mainScreen] scale];
    CGFloat heightOffset = 135 * [[UIScreen mainScreen] scale];

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(newDimension, newDimension), NO, 0.);
    [image drawAtPoint:CGPointMake(-widthOffset, -heightOffset)
             blendMode:kCGBlendModeCopy
                 alpha:1.];

    productImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [self dismissViewControllerAnimated:NO completion:nil];

    ...
}

第一次拍照后,我收到了内存警告,但没有崩溃。 当我尝试重新打开相机时,应用程序崩溃了。 有人可以帮我吗? 谢谢

@autoreleasepool {
    ...
    productImage = UIGraphicsGetImageFromCurrentImageContext();
    ...
}

autoreleasepool可能会有所帮助。 UIGraphicsGetImageFromCurrentImageContext返回自动释放的UIImage对象,该对象将保留一段时间,直到退出自动释放池块或主线程上的runloop结束。 autoreleasepool应该将代码的哪一部分括起来,取决于您的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM