@property 修饰符

1. 读写修饰符 readwrite | readonly

  • readwrite:系统为我们创建这个属性的settergetter方法
  • readonly:系统只为我们创建一个getter方法,不会创建setter方法

2. setter 相关修饰符 assign | retain | copy

  • assign:表示直接赋值,用于基本数据类型和C数据类型,不会牵涉到内存管理;
  • retain:针对对象进行内存管理;
  • copy:主要用在NSString类型,表示复制内容;
    系统默认属性是assignretain是指针的复制,copy是内容的复制、

3. 原子性修饰符 atomic | nonatomic

  • atomic:表示是线程安全的;
  • nontomic:表示是非线程安全的,使用此属性性能会提高一些,系统默认是atomic

4. getter 和 setter 修饰符

@property (getter=getMethodName, setter=setMethodName) Object *obj;

这两个属性修饰符用于设置自定义生成的 settergetter 方法名,使用之后将不再使用系统默认的settergetter 方法名。

@protocol 和 category 中如何使用 @property

  1. protocol 中使用property 只会生成settergetter 方法声明,我们使用实行的目的,是希望遵守我协议的对象能实现该属性。
  2. category 使用@property 也只会生成 settergetter 方法声明,如果我们真的需要给category 增加属性的实现,需要借助于运行时的两个参数:
  • objc_setAssociatedObject
  • objc_getAssociatedObject

你可能感兴趣的:(@property 修饰符)