第六段 理解属性这一概念

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

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


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

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

而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相似     然而在设置方法并不保留新值,而是将其拷贝

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,425评论 11 349
  • 第六条:理解“属性”这一概念 “属性”(property)是Objective-C的一项特性,用于封装对象中的数据...
    DoubleLife不可以阅读 2,790评论 0 1
  • 报修功能不仅仅是拍个脑门你想怎样就怎样,也要关照到实际的线下业务现状,因此,一定是管理方案走在前面,支撑性的功能跟...
    后浪Jason阅读 3,821评论 0 1
  • 第一次用简书发表文章,其实也不知道写些什么好,现在的心情很焦躁,每天都在重复着索然无味的工作,吸着全国最严重的雾霾...
    默之迪阅读 1,755评论 0 0
  • 父亲是威严的,父亲是高耸的,父亲是外冷内热的。 在我眼里我父亲就是一点也没有威严的,但我要什么他都会尽力去买,虽然...
    陈冠彤阅读 2,629评论 2 8