属性 - OC

  • atomic
    原子操作。原子性是指事务的一个完整操作,在objective-c 属性设置里面默认的就是atomic,意思就是setter/getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,相当于函数头尾加了锁。这样的话并发访问性能会比较低;

  • nonatomic
    非原子操作。一般不需要多线程支持的时候就用它,这样在并发访问的时候效率会比较高。在objective-c里面通常对象类型都应该声明为非原子性的。 iOS中程序启动的时候系统只会自动生成一个单一的主线程。程序在执行的时候一般情况下是在同一个线程里面对一个属性进行操作。如果在程序中我们确定某一个属性会在多线程中被使用,并且需要做数据同步,就必须设置成原子性的,但也可以设置成非原子性的,然后自己在程序中用加锁之类的来做数据同步。通常说nonatomic 是提高在非多线程应用中的读写效率。

  • strong
    强引用。引用的存亡直接决定了所指向对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放;

  • weak
    弱引用。不决定对象的存亡,即使一个对象被持有无数个弱引用,只要没有强引用指向它,那么还是会被清除。 指针置为nil。

至于属性的声明和属性的调用,即Property和snythesize关键字的配套使用,大家就自己去网上查询,这里就不加以复述,毕竟需要将精力放置在iOS开发上面,对于OC编程语言的基础知识,除了难点和疑惑点,尽量不作介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 5,525评论 0 1
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 5,718评论 0 4
  • 文/雨子 1、 我不知道 你想要什么 一个世界 一场雨 还是 别的什么 但我知道 有人说过 正确和幸福 只能选一个...
    雨子1983阅读 1,387评论 4 3
  • 有儿万事足阅读 1,216评论 0 0
  • 刚要进入大学的我,还是一个懵懵懂懂的小女孩,带着对未知的迷惘与期待,踏入这个陌生的城市,踏入这个陌生的学校,开始我...
    张比亚阅读 3,627评论 0 0

友情链接更多精彩内容