Category和Extension
来源:互联网 发布:java上传图片 编辑:程序博客网 时间:2024/06/06 04:09
Extension和category
Category(类别):
Category在iOS开发中使用非常频繁,尤其是在为系统类进行拓展时,可以不用继承系统类,直接给系统类添加 方法,最大程度的体现了OC的动态语言特性。
通常的命名方式是:Category扩展的类名+Category name;
局限性:
1、无法向类中添加新的实例变量,类别没有位置容纳实例变量;
2、名称冲突,即当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级,类别方法将完全取代初始方法。
类别的作用:
1、扩展一个其他实施者定义的类,可以为某个类增加方法,增加的方法会被子类继承,而且在运行时也不会和原始的方法有任何不同;
2、作为子类的一个替代方法,不需要定义一个子类来扩展已有的类,通过Category可以直接为类添加方法;
3、把实现一个新类的方法分布在多个源文件里,可以把一个很大的类的方法分组到几个Category里,然后把每个Category放在自己的文件里,Category在很多方面对开发过程都是有帮助的:
①提供一个简单地方式组合相关的方法。被定义在不同的类里的相似的方法可以被保存在同一个源文件里;
②当一个类是由多个开发者共同定义的时候,可以简化大类的管理;
③为一个非常大的类的增量编译提供方便;
④提高常用方法的本地参考;
⑤可以根据不同版本的程序配置不同的类,而无需为不同版本保持相同的源代码;
4、可以用来声明非正式协议;
注意:
1、Category的方法不一定非要在implementation中实现,也可以在其他位置实现,但是当调用Category的方法时,依据继承树没有找到该方法的实现,程序会崩溃。
2、Category理论上不能添加变量,但是可以使用@dynamic来弥补这种不足。
Extension(扩展):
1、常被称为是匿名的Category
2、用于给类添加新方法,但只作用于原始类,不作用于subclass
3、只能对有implementation源代码的类写Extension,对于没有implementation源代码的类,比如framework class,是不可以的
4、可以给原始类添加新方法,以及新属性
区别:
1、形式上来看,Extension是匿名的Category
2、Extension里声明的方法需要在mainimplementation中实现,Category不强制要求
3、Extension可以添加属性(变量),Category不可以
- Category和Extension
- Category和Extension
- Category和Extension
- category和extension
- Category和Extension
- ios Category和Extension
- Category和Extension
- Category和Extension
- category和extension
- iOS中category和extension
- OC的category和extension
- Category和Extension的使用
- Category和Extension的区别
- Objective-C Category和Extension
- Category和Extension的区别
- Category & Extension
- category & extension
- category extension
- 第十一周实践项目(1)
- 计算机图形学直线和园
- 自学考试经验分享 全国计算机等级考试二级C语言
- 【Oracle】基于SCN的增量备份修复DataGuard GAP
- iOS swift学习之入门详解(延迟调用与范型)
- Category和Extension
- no resource found that matches Theme.AppCompat.Light
- ip拨号器demo----BroadcastReceiver
- MySQL学习10:外键约束下的更新操作
- 常见电子器件命名规则
- 阻塞队列LinkedBlockingQueue用法
- Eclipse导入git上的maven web项目 部署
- hdu5591(博弈)
- 最大值和所有元素之和