UIGraphicsGetImageFromCurrentImageContext()保留原因崩溃
问题描述:
这是一个奇怪的,但我认为我只是缺少一些简单的东西。UIGraphicsGetImageFromCurrentImageContext()保留原因崩溃
我有一个名为Theme的Objective C类。 主题从文件加载我的游戏的所有艺术品并将其存储在NSMutableArray中。
当应用程序启动它reates一个新的主题对象。加载过程 部分确实是这样的:
UIImage *image = [self mergeImage: bg toImage: overlay];
[imageArray addObject: image];
我拿的背景图像,并放置在它的上面覆盖,创建一个新的UIImage,通过使用此代码:
- (UIImage *)mergeImage:(UIImage *)image1 toImage:(UIImage *)image2 {
UIGraphicsBeginImageContext(image1.size);
[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];
[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
//[resultingImage retain];
UIGraphicsEndImageContext();
return resultingImage;
}
所有这发生在Theme的init函数中。 这里的问题,当我打电话[主题页头] INIT]从
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
的应用程序崩溃,一秒钟后,留下我的不具有堆栈或任何东西(我想,这螺丝了一些内存和崩溃后,当它再次使用它或某物)。
这是奇怪的部分。如果我不将新合并的图像添加到imageArray,它从不崩溃。我再也没有这个形象,但没有崩溃。另外,如果我不将图像添加到数组中,但我将它保留在mergeImage函数中,它会崩溃,这使我认为保留这个新制作的图像会导致问题。 Weirder仍然是,如果直到后来在应用程序中没有调用mergeImage,在[Theme init]和didFinishLaunchingWithOptions之外,它才是确定的。
任何想法,为什么?应用第一次启动时保留这张图片有什么问题?
答
试试这个下面的代码:
UIGraphicsBeginImageContext(drawImage.bounds.size);
[drawImage.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage
谢谢..!
您的imageArray在您添加新图像时初始化了吗? – graver 2012-04-18 06:42:48
你检查了结果图像不是零吗? – giorashc 2012-04-18 06:46:32
你使用ARC吗? – nielsbot 2012-04-18 07:45:17