self:类似JAVA中的this指针,是隐藏参数,指向当前调用方法的类
super:调用父类的方法
if(self=[super init]),是一种通用写法,赋值并测零是为了防止超类在初始化过程中发生改变,返回不同对象;同时实现父类相关资源的初始化。
atomic:原子访问,对属性赋值时加锁。设置@property属性时,默认为atomic,提供多线程安全
Nonatomic:非原子访问,对属性赋值不加锁。多线程并发访问时会提高性能,但变量易被修改,使程序crash
assign:简单赋值,不更改索引计数。适用于基础数据类型,如NSNumber
copy:新建索引计数为1的对象,并释放旧对象。此属性仅对实现<NSCoding>协议的对象使用。
retain:与copy类似,新建索引计数为1的对象,并释放旧对象。retain是复制指针,copy会新建内存再抄值。对于复杂的数据类型,如NSArray,两者的效果近似。copy虽然会新建内存,但array中的每个元素,只是copy了元素的指针。