@property 修饰符
2019-05-13 本文已影响0人
FRAJ
1. 读写修饰符 readwrite | readonly
-
readwrite:系统为我们创建这个属性的setter和getter方法 -
readonly:系统只为我们创建一个getter方法,不会创建setter方法
2. setter 相关修饰符 assign | retain | copy
-
assign:表示直接赋值,用于基本数据类型和C数据类型,不会牵涉到内存管理; -
retain:针对对象进行内存管理; -
copy:主要用在NSString类型,表示复制内容;
系统默认属性是assign。retain是指针的复制,copy是内容的复制、
3. 原子性修饰符 atomic | nonatomic
-
atomic:表示是线程安全的; -
nontomic:表示是非线程安全的,使用此属性性能会提高一些,系统默认是atomic。
4. getter 和 setter 修饰符
@property (getter=getMethodName, setter=setMethodName) Object *obj;
这两个属性修饰符用于设置自定义生成的 setter 和 getter 方法名,使用之后将不再使用系统默认的setter 和 getter 方法名。
@protocol 和 category 中如何使用 @property
- 在
protocol中使用property只会生成setter和getter方法声明,我们使用实行的目的,是希望遵守我协议的对象能实现该属性。 -
category使用@property也只会生成setter和getter方法声明,如果我们真的需要给category增加属性的实现,需要借助于运行时的两个参数:
objc_setAssociatedObjectobjc_getAssociatedObject