当前位置:  开发笔记 > IOS > 正文

UIImage imageNamed第二次给出EXC_BAD_ACCESS

如何解决《UIImageimageNamed第二次给出EXC_BAD_ACCESS》经验,为你挑选了1个好方法。

我正在开发一款带有一系列迷你游戏的游戏.在一个游戏视图中,我有以下代码:

UIImage* img = [UIImage imageNamed:@"foo.png"];
someImage = CGImageRetain(img.CGImage);
[img release];

someImage的类型为CGImageRef,这在第一次没有问题.在用户输掉迷你游戏(或退出)后,游戏和所有内容似乎都得到了正确的解除.然后,如果他们回到迷你游戏,并且游戏再次构建,那么该行:

someImage = CGImageRetain(img.CGImage);

导致某种错误......几乎就像我的UIImage对象已经被释放了一样.我知道使用[UIImage imageNamed]有一些怪癖,但我根本无法追踪它.任何帮助将不胜感激 :)



1> Andrew Grant..:

这条线是你的问题;

[img release];

在Cocoa中,一般约定是如果函数返回一个对象并且不包含单词copy或alloc,那么你不必释放它.

返回对象的函数通常会将它们添加到自动释放池中.如果您打算保留该对象,那么您应该保留(并在以后发布)它.如果没有,那么它将自动被释放.

如果您尝试释放其中一个对象,则会导致不良.在这种情况下,我怀疑它正在取消分配操作系统认为它仍然拥有的资源.

该线程包含有关Cocoa下内存管理的更多详细信息.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有