Cocoa touch UIImage ImageName第二次授予EXC_BAD_访问权限

Cocoa touch UIImage ImageName第二次授予EXC_BAD_访问权限,cocoa-touch,core-graphics,Cocoa Touch,Core Graphics,我正在做一个有很多小游戏的游戏。在一个gameview中,我有以下代码: UIImage* img = [UIImage imageNamed:@"foo.png"]; someImage = CGImageRetain(img.CGImage); [img release]; someImage是CGImageRef类型,第一次没有问题。在用户输掉小游戏(或退出)后,游戏和一切似乎都得到了正确的释放。然后,如果他们回到迷你游戏中,并且游戏再次构建,那么线条: someImage = CGIm

我正在做一个有很多小游戏的游戏。在一个gameview中,我有以下代码:

UIImage* img = [UIImage imageNamed:@"foo.png"];
someImage = CGImageRetain(img.CGImage);
[img release];
someImage是CGImageRef类型,第一次没有问题。在用户输掉小游戏(或退出)后,游戏和一切似乎都得到了正确的释放。然后,如果他们回到迷你游戏中,并且游戏再次构建,那么线条:

someImage = CGImageRetain(img.CGImage);

导致某种错误…几乎就像我的UIImage对象已经被释放一样。我知道使用[UIImage ImageName]有一些怪癖,但我根本找不到。任何帮助都将不胜感激:)

这条线是你的问题

[img release];
在Cocoa中,一般约定是,如果函数返回一个对象,并且不包含单词copy或alloc,则不必释放它

返回对象的函数通常将对象添加到自动释放池中。如果计划保留该对象,则应保留(并在以后释放)该对象。如果没有,它将自动被释放

如果你试图释放这些物体中的一个,那么它将导致不良后果。在这种情况下,我怀疑它正在释放操作系统认为它仍然拥有的资源


包含有关Cocoa下内存管理的更多详细信息。

这似乎可以做到……谢谢:)总有一天我会掌握需要跟踪哪些对象的窍门。:)