atomic:只能单线程进行访问和修改属性,性能低(默认)
nonatomic: 多线程进行访问和修改属性,性能高
copy:主要用在NSString类型,表示复制内容。一般用于NSString/block
setter:相关修饰符:assign | retain | copy 系统默认属性是assign。retain是指针的复制,copy是内容的复制
assign:用于非指针变量。用于基础数据类型(如NSInteger, CGFloat)和C数据类型(int, float, double, char等), 另外还有id类型,基本数据类型,结构体、枚举、(非oc对象);记住:前面不需要加*的就用assign
strong: 这个属性特质表示一种拥有的关系,一般用于除了NSString/block之外的oc对象
weak: 一般用于代理/UI控件,当两个对象相互引用(例如控件和控件的代理),一个用strong, 一个用weak,避免循环引用。
声明block对象时首先需要用copy修饰符,另一个需要注意的问题是关于线程安全,调用block时另一个线程有可能去修改block时需要使用atomic,如果确定不会发生则使用nonatomic