OC中,ARC机制下类的属性的定义
来源:互联网 发布:知乎提问后自己找不到 编辑:程序博客网 时间:2024/04/30 03:50
1.属性
- 属性时OC的一项特性,用于封装对象中的数据
- @property基于严格的命名规范
- 优点:
- 使用点语法和存取方法效果相同
- 使用属性,编译器会自动编写访问这些属性所需的方法,该过程由编译器在编译器执行
- 禁止编译器自动合成存取方法
- 自己实现存取方法
- 使用@dynamic关键字,该关键字会告诉编译器:
- 不要自动创建实现属性所用的实例变量
- 不要为其创建存取方法。编译器确定运行期一定能找到这些方法
2.属性特质(关键字)
- 特制的设定会影响编译器所生成的存取方法
- 特质分类
- 原子性:默认情况下,邮编一起所合成的方法会通过锁定机制确保其原子属性
- nonatomic:非原子的,不使用同步锁
- atomick:原子的,使用同步锁
- 读写权限:
- readwrite:可读写,属性拥有getter/setter方法
- readonly:只读,属性只由获取方法
- 内存管理语义:所有权语义
- assign:其设置方法只会执行针对“纯量类型”的简单赋值操作
- strong:“拥有关系”,其设置方法先保留新值,并释放旧值,然后再将新值设置上去
- weak:“非拥有关系”,类似于assign,但在属性所知的对象遭到销毁时,属性值也会清空(=nil)
- unsafe_unretained:跟assign相同,但它适用于“对象类型”,对象销毁时没有赋空操作
- copy:所属关系与strong类似,然而设置方法并不保留新值,而是将其copy。经常用此特质保护其封装性
- 方法名:
- getter=<name>:指定“获取方法”的方法名
- setter=<name>:指定“设置方法”的方法名
- 注意:所有的属性都声明为nonatomic,因为在iOS中使用同步锁的开销很大,这会带来性能问题,atomic并不能保证线程安全。
要点
- 可以用@property语法来定义对象中所封装的数据
- 通过“特质”来指定存储数据所需要的正确语义
- 在设置属性所对应的实例变量时,一定要遵从该属性所声明的语义
0 0
- OC中,ARC机制下类的属性的定义
- OC的ARC机制
- ARC属性的定义
- OC学习笔记-ARC机制中循环引用的解决办法
- OC中ARC机制的理解和整理
- oc语言 ARC机制的简单学习
- OC学习笔记09--OC中内存管理的ARC机制
- ARC机制下的总结
- OC语法<2.3>内存管理:ARC机制下的内存管理
- OC中关于属性的一些基本定义
- OC中ARC的实现机理
- OC里面的ARC
- OC 中类的声明和定义
- oc中类的声明、定义
- 黑马程序员——OC语言的ARC机制
- ARC机制下的循环引用【结合非ARC引用】
- ARC和非ARC下使用Block属性的问题
- ARC和非ARC下使用Block属性的问题
- 黑马程序员—java之多线程总结
- meanshift算法推导
- Java中关于String赋值的两种形式
- js中prototype用法详细介绍
- [翻译]Drools6.2帮助文档-4.KIE-上
- OC中,ARC机制下类的属性的定义
- ubuntu 14 关于vpn服务启动失败的问题解决方案
- Bloom Filter(布隆过滤器)原理
- 抽象工厂模式(四):界面皮肤库的抽象工厂模式解决方案
- jsp web.xml文件的作用及基本配置
- 倒置英文字母中单词的字母顺序
- 用java实现小写字母转大写字母
- Android onTouchEvent事件中onTouch方法返回值介绍
- 黑马程序员——Objective-C 第一天课程学习总结