iOS内存管理 - 澄清

时间:2012-12-26 17:32:45

标签: objective-c ios ios5 memory-management dealloc

我知道allocretain会增加对象的引用次数。是否有任何其他方法实际增加引用计数?何时/如何调用dealloc

2 个答案:

答案 0 :(得分:7)

  • alloc分配一个保留计数为1的对象。
  • new开头的方法也会返回一个保留计数为1的对象。
  • retain将计数加1。
  • releaseautorelease(在运行循环结束时)将其减1。
  • 以类名(不带前缀)开头的方法返回一个自动释放的对象,这意味着如果你不自己保留它,它将在循环结束时释放。
  • 最后,复制对象的方法(通常以copy开头)也会创建一个保留计数为1的副本。
当对象的保留计数降至0时,将调用

dealloc

PS。如果您还不知道,请考虑使用Automatic Reference Counting (ARC)

答案 1 :(得分:3)

随着这些,保留计数会增加。

  1. new,但可以看作是alloc + init。

  2. 保留

  3. copy使用retain count = 1

  4. 创建新对象
  5. mutableCopy使用retain count = 1

  6. 创建新对象 一旦保留计数达到0,就会自动调用

    dealloc