Effetive Objective - C 1.Objective 24 - 28 分类
2016-08-05 18:12
295 查看
1.可用于分散代码
2.利用分类添加方法: 其实就是在运行期动态的想类中添加方法 可能会有同名方法的情况导致方法的覆盖 导致bug的产生 可以将分类的方法加上前缀降低覆盖的几率
分类无法为原类动态的添加实例变量 所以不要再分类中使用属性 在扩展中可以使用
如果想在分类中使用属性可以利用关联对象来实现
要将所有的数据封装在主接口中 这里是唯一能定义实例变量的地方 分类只是扩展原类的的功能 并不封装数据
类扩展:没有名字 声明并实现在主类的实现文件中 可以生命实例变量 变量和函数都是私有的
优点
1.类扩展有助于对实现细节的隐藏
2.oc的头文件如果引入c++文件则为混编 为了将oc的头文件为纯oc文件 可以在类扩展中引入c++对象
3.可以在类扩展中修改属性的访问权限 这样既控制了外部的访问 又可以在内部公开一些功能
4.隐藏协议 将协议设置为私有
如果不想讲类名公开可以利用协议隐藏 id<protocol> (其实用id就可以啦 这样写只是说明了这个id类型一定遵循这个protocol)
2.利用分类添加方法: 其实就是在运行期动态的想类中添加方法 可能会有同名方法的情况导致方法的覆盖 导致bug的产生 可以将分类的方法加上前缀降低覆盖的几率
分类无法为原类动态的添加实例变量 所以不要再分类中使用属性 在扩展中可以使用
如果想在分类中使用属性可以利用关联对象来实现
要将所有的数据封装在主接口中 这里是唯一能定义实例变量的地方 分类只是扩展原类的的功能 并不封装数据
类扩展:没有名字 声明并实现在主类的实现文件中 可以生命实例变量 变量和函数都是私有的
优点
1.类扩展有助于对实现细节的隐藏
2.oc的头文件如果引入c++文件则为混编 为了将oc的头文件为纯oc文件 可以在类扩展中引入c++对象
3.可以在类扩展中修改属性的访问权限 这样既控制了外部的访问 又可以在内部公开一些功能
4.隐藏协议 将协议设置为私有
如果不想讲类名公开可以利用协议隐藏 id<protocol> (其实用id就可以啦 这样写只是说明了这个id类型一定遵循这个protocol)
相关文章推荐
- scala学习7--class、object、trait
- uLua中调用C#中的GameObject
- DeepCloneObjects 和 DeepClone
- JavaScript引用类型——Object类型
- ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory解决方案
- JavaScript笔记——引用类型之Object类型和Function类型
- win7 Microsoft NET Framework 4.5.1 安装错误解决办法
- 'NoneType' object is not iterable
- java.lang.Object总结
- Java Objects.equals()的作用---避免空指针异常
- Effetive Objective - C 1.Objective 22.理解NSCopying协议
- 如何精通MFC-----CObject类的理解
- Effetive Objective - C 1.Objective 19.理解错误模型
- Effetive Objective - C 1.Objective 18.尽量使用不可变对象
- Objects and Data Structures
- JavaScript中的ActiveXObject对象
- Objective-C URL加载系统
- Objective-C 文件处理
- 《Objective-C高级编程 iOS与OS X多线程和内存管理》学习笔记——第二章Blocks
- 【转】error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory