相关疑难解决方法(0)

了解何时调用保留在对象上?

什么时候应该retain使用?我知道它增加了对象引用计数,所以基本上该release对象的下一个不会调用dealloc它.好的,那又怎样?我读到这是一种惯例,如果你关心一个物体,你retain就是它.那里有什么例子吗?这是真的吗?

编辑:

我不是在寻找调试器告诉你这样做的时候.所以,我调查了这个.

用它来说,这是一个retain用法的例子

  • 在你的代码中,你在某处调用一个方法,该方法返回一个你不拥有的对象
  • 你使用那个对象
  • 然后你想释放它=> 你不能因为你不是主人
  • 你的解决方案是使用copyretain.如果您是用户retain,那么您将获得该对象的所有权.
  • 然后要释放该对象,您要么执行2 release(因为保留时引用计数为1 + 1)或直接使用dealloc

是吗?我不这么认为,因为一个对象可以拥有多个所有者.所以对于最后一点,调用dealloc将真正"杀死"对象; 但是对于2 release,你不会是所有者,但创建它的程序仍然是,因此对象在某个地方仍然存在(泄漏?僵尸?)

我很困惑.

iphone cocoa-touch memory-management

6
推荐指数
1
解决办法
793
查看次数

解决iPhone上内存泄漏的最佳方法是什么?

请建议解决iphone上内存泄漏问题的最佳方法.释放,自动释放,保留的最佳用途是什么,哪些适用于哪些情况?

iphone memory-leaks ios ios-simulator

4
推荐指数
1
解决办法
1927
查看次数

UIImage imageNamed第二次给出EXC_BAD_ACCESS

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

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

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

someImage = CGImageRetain(img.CGImage);
Run Code Online (Sandbox Code Playgroud)

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

cocoa-touch core-graphics

3
推荐指数
1
解决办法
3097
查看次数

iPhone内存管理的最佳解释在哪里?

我正在寻找好的解释.我有一本关于objective-c的1000页书籍,但不幸的是关于内存管理,保留计数的部分,描述得非常糟糕且难以理解.

iphone memory-management

2
推荐指数
2
解决办法
1139
查看次数