alloc 函数是创建对象使用,创建完后计数器为1,只用一次
retain是对一个对象的计数器+1,可以调用多次
release是对一个对象计数器-1,减到0对象就会从内存中释放
Objective-C类中实现了引用计数器,对象知道当前被引用的次数
最初对象的计数器是1
如果需要引用对象,可以给对象发送一个retain消息,这样对象计数器就加1
当不需要引用对象了,可以给对象发送release消息,这样对象计数器就减1
当计数器减到0,自动调用对象的dealloc函数,对象就会释放内存
计数器为0的对象不能再使用release和其他方法
如果对一个对象使用了alloc,[mutable]copy,retain,那么你必须使用相应的release或者autorelease
下面三种增加对象计数器
- 当明确的使用alloc方法来分配对象。
- 当明确地使用copy[WithZone:]或者mutableCopy[WithZone:]来copy对象时。
- 当明确使用retain消息。
上述三种方法使得计数器增加,那么就需要 [auto]release来明确释放对象,也就是递减计数器
属性可以是:
- readwrite(缺省),readonly表示属性石可读写的,也就是可以使用getter和setter,而readonly只能使用getter
- assign(缺省),retain,copy表示属性如何存储
- nonatomic表示不用考虑线程安全
- getter=…,setter=…重新设置getter函数和setter函数名