数组中的对象每次加入数组中对象的引用计数器都会加1,每当数组中的元素移除的时候对象的引用计数器都会减1,对于不可变的数组不能移除对象,当数组的引用计数器为0的时候,会逐一的清除数组中的对象,collection可以自己管理自己的内存,
不可变对象进行复制的时候如果是copy那么相当于retain,得到的也是不可变的数组,可变的对象经过copy之后得到的时不可变对象,但此时是深拷贝,引用计数器不变,但是内存地址会改变,进行mutable拷贝后得到的是可变的对象,引用计数器不变,内存地址改变
属性,有三个可读性(readonly,readwrite为默认),语义性(retain copy assign为默认),原子性(nonatomic,atomic为默认)
扩展类的方法
@interface 类名 ()
…….方法体
@end
用来为类添加私有方法,如果()中不为空,那么相当于是category那么就不能为类添加私有变量了
@interface 要添加方法的类名 (自己定义的类名)
……..方法体
@end
只能为类添加方法,不能添加实例变量
@protocol 协议名 <要遵循的协议>
@required//默认为这个 代表必须实现
…..方法
@optional //可以选择的方法
…..方法
@end
@interface 子类的名称:父类名
…..属性
……方法
@end