源码

首页 » 归档 » 源码 » [底层原理]关于iOS中property修饰符个人的一点理解

[底层原理]关于iOS中property修饰符个人的一点理解

在日常的iOS开发中,我们每天都会使用到property,但是对于property的修饰符,可能大家跟我以前一样,理解的不是特别透彻,现在就让我们来了解了解吧,

首先,一个property是可以看成是:

property = 实例变量+setter方法+getter方法

属性修饰符会直接影响后续编译器对于setter和getter方法的合成,属性的修饰符分为以下三类:

1.原子性

atomic VS nonatomic

具备atomic特质的属性,编译器合成的setter和getter方法会加锁,能够保证当多个线程在读写属性时,总是能够获取到属性值,如果修饰符为nonatomic,则不会对setter和getter方法加锁,在通常情况下,使用nonatomic不会带来什么问题,但是如果一个线程在多次修改某个属性时,另一个线程去读取属性时,可能会取到未修改好的属性,下面我们将举例来证明:

使用nonatomic修饰dataArray,会崩溃

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/dicengyuanliguanyuioszhongpropertyxiushifugerendeyidianlijie.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:3 月 26, 2019 at 09:36 下午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复