OC阅读笔记一:尽量使用不可变对象
2016-03-24 22:24
295 查看
当将可变对象放入collection又修改值时,容易破坏set的内部数据结构,令其失去固有的语义;
将属性声明为readonly后,当试图改变属性值时编译器就会报错.保证开发时对象的底层数据不会改变,对象本身的数据结构也就不可能出现不一致的现象.
在对象内部"class-continuation分类"可以将属性重新声明为readwrite.
如要修改属性值,应该通过该类提供的方法来实现.
在对象外部,仍然可以设置这些属性值,通过KVC来实现.违规绕过该类提供的API.
或者通过类别信息查询功能查出对应的实例变量在内存中的偏移量来修改对应的实例变量的值.
可以通过class_copyIvarList和class_copyPropertyLIst获得类中所有的成员变量和属性的详细信息.
将属性声明为readonly后,当试图改变属性值时编译器就会报错.保证开发时对象的底层数据不会改变,对象本身的数据结构也就不可能出现不一致的现象.
在对象内部"class-continuation分类"可以将属性重新声明为readwrite.
如要修改属性值,应该通过该类提供的方法来实现.
在对象外部,仍然可以设置这些属性值,通过KVC来实现.违规绕过该类提供的API.
或者通过类别信息查询功能查出对应的实例变量在内存中的偏移量来修改对应的实例变量的值.
可以通过class_copyIvarList和class_copyPropertyLIst获得类中所有的成员变量和属性的详细信息.
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- AS3自写类整理笔记 ClassLoader类第1/2页
- AS3自写类整理笔记 Dot类第1/2页
- DB2新手使用的一些小笔记:新建实例、数据库路径不存在、客户端连接 .
- perl脚本学习指南--读书笔记
- 《C++ primer plus》读书笔记(三)
- 《C++ primer plus》读书笔记(二)
- jquery 笔记 事件
- VPS 配置优化笔记
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略