【发布时间】:2010-11-05 20:21:27
【问题描述】:
我是 iPhone 应用开发的新手,所以我可能做错了什么。
基本上,我是从互联网上加载一堆图像,然后对其进行裁剪。我设法找到了异步加载图像并将它们添加到视图中的示例。我已经设法通过NSOperation 添加带有NSData 的图像来做到这一点,该NSOperation 添加到NSOperationQueue 中。
然后,因为我必须制作固定大小的拇指,我需要一种方法来裁剪这些图像,所以我在网上找到了一个基本上使用UIGraphicsBeginImageContext()、UIGraphicsGetImageFromCurrentImageContext()和UIGraphicsEndImageContext()的脚本来绘制裁剪的图像,以及不重要的尺寸计算。
问题是,该方法有效,但由于它生成了大约 20 张这样的图像,它会在生成其中一些图像后随机崩溃,或者有时在我关闭并重新打开应用程序一两次后随机崩溃。
在这种情况下我该怎么办?我也尝试使用NSOperations 和NSOperationQueue 使这些方法以某种方式异步运行,但没有运气。
如果裁剪代码比我想象的更相关,那就是:
UIGraphicsBeginImageContext(CGSizeMake(50, 50));
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = CGPointMake(0.0,0.0); //this is actually generated
// based on the sourceImage size
thumbnailRect.size.width = 50;
thumbnailRect.size.height = 50;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
谢谢!
【问题讨论】:
-
当崩溃发生时调试器会说什么?另外,这是在设备上运行还是在模拟器中运行??
-
如果您只是同步完成工作,而不是使用 NSOperationQueue,它还会崩溃吗?神秘崩溃的通常原因是你释放了一些你不应该释放的东西,尤其是当你崩溃时的堆栈跟踪中包含“autorelease”或“pool”这样的词......
标签: iphone objective-c cocoa-touch memory-management