@property的使用策略

@property (atomic,strong) NSArray *array;
@property (nonatomic,assign) int intValue;
  • 原子(atomic)
    • atomic 内部会为setter方法加锁,提供多线程安全。是防止在写未完成的时候被另外一个线程读取,造成数据错误,但是需要耗费性能。
  • 非原子(nonatomic)
    • nonatomic: 不会为setter方法加锁,非线程安全,在自己管理内存的环境中,解析的访问器保留并自动释放返回的值,如果指定了 nonatomic ,那么访问器只是简单地返回这个值,性能好。
  • 建议:开发中建议所有的属性都优先使用非原子属性,如果确实发生了多线程访问某一个属性的情况,再具体修改该属性为atomic,可以提高程序性能又保证安全

  • assign
    • 基本数据类型枚举结构体等非OC对象类型
  • weak
    • OC对象类型(比如NSArray、NSDate、NSNumber、模型类)
  • strong
    • OC对象类型(比如NSArray、NSDate、NSNumber、模型类)
    • 一个对象只要有强指针引用着,就不会被销毁
  • copy
    • 一般用在NSStringblock类型上

你可能感兴趣的:(@property的使用策略)