OC——52个有效方法:6.理解“属性”概念

2017-06-15  本文已影响15人  梦蕊dream

使用OC等面向对象语言编程时,“对象(object)”就是“基本结构单元(building block)”。开发者可以通过对象来存储传递数据。对象之间传递数据并执行任务的过程就是“消息传递(Messaging)”。当程序运行起来之后,为其提供相关支持的代码叫做“运行期环境(runtime)”。它提供了一些使得对象之间能够传递信息的重要函数,并包含创建类实例所用的所有逻辑。

属性

属性是OC的特有属性,用于封装对象中的数据。实例变量通过“存取方法(access method)”来访问。获取方法(getter)读取变量值,设置方法(setter)写入变量值。

属性的特质

特质(attribute)

默认由编译器合成的方法会通过锁定机制确保其原子性(atomicity),如果属性具备nonatomic特质,则不使用同步锁。如果一个属性不具备nonatomic特质,那她就是原子的(atomic)。

属性用户封装数据,而数据有自己的所有权语义。

atomic和nonatomic区别

具备atomic特质的获取方法会通过锁定机制来确保其操作的原子性。例如:两个线程读写同一个属性,无论何时都能看到有效的属性值。如果不加锁,当一个线程改变了属性值,另外一个也恰好在更改,就会造成属性读取不一致,导致后续的问题。
看到的属性几乎都是非原子性的原因:

总结

上一篇 下一篇

猜你喜欢

热点阅读