知识点总结

iOS 属性关键字

2019-04-11  本文已影响3人  飞不越疯人院

1. 读写权限

2. 原子性

atomic修饰的一定是线程安全吗?看这里

3. 引用计数


4. assignweak对比

assign weak
可以修饰基本数据类型和对象 只能修饰对象
修饰对象的时候不会改变其引用计数 修饰对象的时候不会改变其引用计数
会产生悬垂指针,所修饰对象被释放后指针仍然指向原地址,如果访问可能会产生内存泄漏 所修饰对象被释放后会自动置为nil


补充:MRC下重写retain修饰的变量的setter方法
@property (nonatomic, retain) NSString *name;

- (void)setName:(NSString *)name {
      if (_name != name) {
        [_name release];
        _name = [name retain];  
    }
  }
 //判断_name! = name是否有必要? 有必要; 如果不判断直接走里面的逻辑, 那么有可能_name直接被release掉了, 下面再调用_name会出现不可预知问题;

参考文章
iOS unsafe_unretained 的理解和使用
iOS weak修饰符的实现原理
iOS 常用属性的关键字的使用说明

上一篇下一篇

猜你喜欢

热点阅读