ios内存管理

  • 使用alloc、new或者copy创建一个新对象时,对象的保留计数器设置为1.
  • retain方法,对象的保留计数器+1
  • release方法,对象的保留计数器-1
  • 对象的保留计数器为0时,对象会自动调用dealloc,销毁对象
  • 不能直接调用dealloc
  • 访问器的set方法实现如下:要先保留新对象,然后再释放旧对象
    - (void) setValue: (ObjectX) newValue {
        [newValue retain];
        [value release];
        value = newValue;
    }
  • autorelease方法,将对象添加到自动释放池中,当自动释放池销毁时,会向该池中的所有对象调用release方法
  • 自动释放池是全局性的,接收所有的autorelease消息。即便是你在一个方法范围内,创建一个自动释放池,这是一个局部变量,但它接收所有的autorelease消息,如果此时在其他的代码中调用了autorelease,就会将对象放入这个池中。当创建一个新的自动释放池时,它将被添加到栈顶,接收autorelease消息的对象将被放入最顶端的自动释放池中。
posted @ 2012-06-10 21:22  zhoulong  阅读(110)  评论(0)    收藏  举报