1只有在自动释放池中调用了对象的autorelease方法,这个对象才会被存储到这个自动释放池之中. 如果只是将对象的创建代码写在自动释放之中,而没有调用对象的autorelease方法.是不会将这个对象存储到这个自动释放池之中的. 2对象的创建可以在自动释放池的外面,在自动释放池之中,调用对象的autorelease方法,就可以将这个对象存储到这个自动释放池之中. 将1个对象存储到自动释放池中,最重要的步骤 调用对象的autorelease方法,这句代码一定要放在池子中. 3当自动释放池结束的时候.仅仅是对存储在自动释放池中的对象发送1条release消息 而不是销毁对象. 如果在自动释放池中,调用同1个对象的autorelease方法多次.就会将对象存储多次到自动释放池之中. 在自动释放池结束的时候.会为对象发送多条release消息.那么这个时候就会出现僵尸对象错误. 所以,1个自动释放池之中,只autorelease1次,只将这个对象放1次, 否则就会出现僵尸对象错误. 5 如果在自动释放池中,调用了存储到自动释放中的对象的release方法. 在自动释放池结束的时候,还会再调用对象的release方法. 这个时候就有有可能会造成野指针操作. 也可以调用存储在自动释放池中的对象的retain方法. 6)将对象存储到自动释放池,并不会使对象的引用计数 所以其好处就是:创建对象将对象存储在自动释放池,就不需要在写个release了. 7自动释放池可以嵌套. 调用对象的autorelease方法,会讲对象加入到当前自动释放池之中 只有在当前自动释放池结束的时候才会像对象发送release消息.
|