这是一个奇怪的,但我想我只是缺少一些简单的东西。
我有一个名为Theme的Objective C类。 主题从文件加载我的游戏的所有艺术并将它们存储在NSMutableArray中。
当应用程序启动时,它会创建一个新的Theme对象。 部分加载过程是这样的:
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函数中。 当我从
调用[[Theme alloc] init]时,问题就出现了-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
应用程序在一秒钟之后崩溃,让我没有任何堆栈或任何东西(我认为它会破坏一些内存并在以后再次使用它时崩溃)。
这是奇怪的部分。如果我不将新合并的图像添加到imageArray,它永远不会崩溃。我没有图像,但没有崩溃。另外,如果我没有将图像添加到数组中,但是我将它保留在mergeImage函数中,它会崩溃,这让我觉得保留这个新制作的图像会导致问题。 Weirder仍然,如果我直到稍后在应用程序中调用mergeImage,在[Theme init]和didFinishLaunchingWithOptions之外,它就没问题了。
知道为什么吗?在应用首次启动时保留此图片有什么问题?
答案 0 :(得分:0)
尝试以下代码:
UIGraphicsBeginImageContext(drawImage.bounds.size);
[drawImage.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage
谢谢..!