第六段 理解属性这一概念

2017-10-12  本文已影响0人  谁夏了我的夏

什么是对象?  类的实例化。

什么是类? 具有相同事物特征的统称。

对象是面向对象编程的基本构造单元。对象可以存储并传递数据。

对象与对象之间的数据传递并执行任务的过程,就叫做消息传递。

而runtime 就是实现消息传递的函数。

属性是OC的一项特性,用于封装对象中的数据。 OC对象通常把数据保存成各种实例变量,而通过存取方法来访问对象。   点语法比较直观的对对象进行存取操作。

@property   编译器自动写出一套存取方法,用来访问给定类型中具有给定名称的变量。

@synthesize 用来指定实例变量的名字

nonatomic   非原子性,不使用同步锁。

atomic  原子性  缺点影响性能     举例,当两个线程读写同一属性时,无论何时,总能看到有效的属性值,不加锁(即nonatomic)的情况下,一个线程设置值,另一个线程刚好读值,那么尚未修改好的属性值读取出来,发生这情况,那线程读的属性值就不对了。   正常情况下也都是使用非原子性,第一考虑性能问题(同步锁开销太大),第二点就是一个线程连续多次读取某个属性值过程中,别的线程同时修改该值,即便你声明原子性,也还是会读到不同值。

readwrite  读/写权限     

readonly  只读   可在头文件携程只读,在分类中,就是在实现文件内写成可读可写

特质:

assign  基本用在CGFloat 或者NSInteger  “纯量类型”

strong  拥有关系,属性在设置新值时,保留新值,释放旧值,然后把新值设置上去    用于各种view,数组等

weak 非拥有关系,属性设置新值时,既不保留新值,也不释放旧值        与assign 类似,在属性所指的对象遭到摧毁时,属性值也会清空。就是指向nil

unsafe_unretained  此特质语义和assign相同   适用于对象类型    非拥有关系 unretained表示不保留  当目标对象被摧毁时,属性值不会清空(unsafe)  这点和weak不一样

copy   所属关系与strong相似     然而在设置方法并不保留新值,而是将其拷贝

上一篇 下一篇

猜你喜欢

热点阅读