![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
Chen_X贱
这个作者很懒,什么都没留下…
展开
-
细说@property(一)
@property是什么?@property = 实例变量 + get方法 + set方法@property (nonatomic, copy) NSString *name;上面这段代码,可能初学者理解也就是声明一个对象的属性。其实,我们再进一步可以拆分这段代码,它创建了一个实例变量,并且给这个实例变量设置了一个setter方法来设置这个变量的值、一个getter方法来获取这个变...原创 2018-12-19 20:45:48 · 155 阅读 · 0 评论 -
细说@property(二)
@property合成和重写自动合成定义一个@property,在编译期间,编译器会生成实例变量、getter方法、setter方法,这些方法、变量是通过自动合成(autosynthesize)的方式生成并添加到类中。实际上,一个类经过编译后,会生成变量列表ivar_list,方法列表method_list,每添加一个属性,在变量列表ivar_list会添加对应的变量,如_name,方法列表...原创 2019-01-03 20:57:07 · 174 阅读 · 1 评论 -
细说@property(三)
@property修饰符定义一个属性时,nonatomic、copy、strong、assign等被称作是关键字,或者是修饰符。修饰符种类原子性。原子性有nonatomic、atomic两个值,如果不写nonatomic,那么默认是atomic的。如果属性是atomic的,那么在访问其getter和setter方法之前,会有一些判断,大概是判断是否可以访问等,这里系统使用的是自旋锁...原创 2019-01-16 16:16:04 · 124 阅读 · 0 评论 -
细说@property(四)
copy和strongcopy和strong的区别是面试中出现频率最高的,我们一般都知道,不可变对象属性修饰符使用copy,可变对象属性修饰符使用strong。可变对象和不可变对象Objective-C中存在可变对象和不可变对象的概念。像NSArray、NSDictionary、NSString这些都是不可变对象,像NSMutableArray、NSMutableDictionary、...原创 2019-01-31 17:52:31 · 97 阅读 · 0 评论 -
细说@property(五)
copy和mutableCopycopy和mutableCopy之间的差异主要和深拷贝和浅拷贝有关,先看一下深拷贝、浅拷贝的概念。深拷贝、浅拷贝所谓浅拷贝,在Objective-C中可以理解为引用计数加1,并没有申请新的内存区域,只是另外一个指针指向了该区域。深拷贝正好相反,深拷贝会申请新的内存区域,原内存区域的引用计数不变。看图来说明深拷贝和浅拷贝的区别。首先A指向一块内...原创 2019-02-01 10:16:57 · 81 阅读 · 0 评论