我的第一篇帖子位于here,以查找我的应用崩溃的原因。经过近3个小时的检测,现在我可以找到泄漏的位置。
首先,我正在做的是使用AFNetworking下载图像后,我将根据下载图像的大小设置uiimageview的大小。
[self.headerView setImageWithURLRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:fundraiserInfo.imageUrl]]
placeholderImage:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
// Use following to set the size of image according to retina or non retina
CGImageRef sourceImageRef = [image CGImage];
UIImage *newImage = [UIImage imageWithCGImage:sourceImageRef scale:[image scale] orientation:[image imageOrientation]];
CGImageRelease(sourceImageRef); // <------ this is I am getting crash
weakObj.image = newImage;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
;
}
];
我收到如下警告
Incorrect decrement of the reference count of an object that is not owned at this point by the caller
我如何发现泄漏:
放置该行并运行该应用程序,该应用程序在多次尝试后崩溃。通过2小时后检测,我可以重现错误。如果我删除该行并完全按照我的操作重现错误,则该应用程序正常运行且完全没有崩溃。
任何想到为什么这条线是我的应用程序崩溃的原因
答案 0 :(得分:2)
您只使用CGImageRef sourceImageRef = [image CGImage];
引用sourceImageRef。你不是创造,保留它,所以发布它不是你的责任。
我希望你看一下帖子Releasing CGImageRef。