我有以下代码在一段时间后导致崩溃,因为我在计时器中设置了以下代码:
CGImageRef cgImage = UIGetScreenImage();
[array addObject:(id)cgImage];
CGImageRelease(cgImage);
我最初宣称array
为:
array = [[NSMutableArray alloc] init];
定时器一直运行到10秒,因为计时器在10秒后崩溃时为1/10秒。
我认为应用程序崩溃是因为EXC_BAD_EXCESS
但不知道如何解决。
有人可以帮忙解决问题吗?
感谢Adv。
答案 0 :(得分:0)
addObject:将引发异常。试试这个:
array = [[NSMutableArray alloc] initWithCapacity:1]; //designated initializer
CGImageRef cgImage = UIGetScreenImage();
if(cgImage)
{
[array addObject:cgImage];
CGImageRelease(cgImage);
}
答案 1 :(得分:0)
你确定你应该发布cgImage吗?
我没有看到UIGetScreenImage()的文档,但是如果它跟在Create Rule之后,我不希望你需要释放该对象(因为该函数没有“Create”或“Copy”在它的名字)。
编辑:
我发现有几个references表示你做需要释放图像,尽管该函数的名称。 (显然已在3.2 SDK中重命名为UICreateScreenImage()
。
答案 2 :(得分:0)
从Apple Developer Forum到UIGetScreenImage():
使用此功能时请注意 它返回一个保留的CGImageRef 并相应地管理你的记忆。