tags: OC 30 day
自动释放池的原理
存入到自动释放池中的对象,在自动释放池被销毁的时候,会自动调用储存在该自动释放池中的所有对象的release方法。
可以解决的问题:
将创建得对象,储存在自动释放池当中。就不再需要手动release这个对象了。
因为池子销毁的时候,就会自动调用池中所有对想的release。
如何创建自动释放池
@autoreleasepool { }
这对大括弧代表这个自动释放池的範围。
如何将对象储存在自动释放池之中
在自动释放池中调用对象的autorelease方法,就会将这个对象存入到当前自动释放池之中。这个autorelease方法返回的是对象本身。所以我们可以这么写
@autoreleasepool { Person *p1 = [[[Person alloc]init]autorelease]; }
可读性比较高的写法
@autoreleasepool { Person *p1 = [[Person alloc]init]; [p1 autorelease]; }
这个时候,当这个自动释放池执行完毕之后,就会立即为这个自动释放池的对象发送一条release消息。
目前为止,我们感受到的autorelease的好处:
创建对象,调用对象的autorelease方法,将这个对象存入到当前的自动释放池当中。
我们就不需要再去release,因为自动释放池销毁的时候,就会自动的调用池中所有对象的release。