您当前的位置: 首页 >  ios

培根芝士

暂无认证

  • 0浏览

    0关注

    446博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

iOS属性声明关键字atomic与nonatomic

培根芝士 发布时间:2019-01-23 16:15:16 ,浏览量:0

@property (nonatomic, strong) UIImage *defaultImage;
@property (atomic, strong) NSString *defaultName;

atomic:变量默认是有该有属性的,这个属性是为了保证在多线程的情况下,编译器会自动生成一些互斥加锁的代码,避免该变量的读写不同步的问题。  

nonatomic:如果该对象无需考虑多线程的情况,这个属性会让编译器少生成一些互斥代码,可以提高效率。

atomic 的意思是setter/getter 这个函数,是一个原子操作,如果有多个线程同时调用setter的话,不会出现某一个线程执行完setter全部语句之前,另一个线程开始执行setter情况,相当于函数头尾加了锁一样,可以保证数据的完整性。nonatamic 不保证setter/getter 的原语行,所以你可能会取到不完整的东西。因此,在多线程的环境下的原子操作是非常必要的,否则可能会引起错误的结果。

关注
打赏
1660824269
查看更多评论
立即登录/注册

微信扫码登录

3.4968s