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消息的对象将被放入最顶端的自动释放池中。

浙公网安备 33010602011771号