设为首页 加入收藏

TOP

OC 类别与扩展(匿名类别)
2017-10-13 10:23:55 】 浏览:7162
Tags:类别 扩展 匿名

OC 类别与扩展(匿名类别)


类别(Categroy):

又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同。

类别文件名 = 原类名 + 类别名

类别的格式:
@interface 原类名 (类别名)

在类别中添加 @property
只做了set/get的声明,没有实现,更不会生成成员变量。

类别的作用:

①为现有的类添加新方法;
②将类的实现分散到多个不同文件或多个不同框架中(把一个大的类按功能划分成几块,便于维护);
③通过替换现有类中的方法,修正现有类(没有源码文件的情况下)的功能或错误

类别的局限性
①无法向现有的类中添加新的实例变量(类别没有位置容纳实例变量);
②方法名称冲突,即类别中的新方法的名称与现有类中方法名称重名,类别具有更高的优先级,类别中的方法将完全取代现有类中的方法(再也无法访问现有类中的同名方法)。

@interface UIColor (ChangeColor)

@end
@implementation UIColor (ChangeColor)

@end

扩展:

可以在类扩展中声明属性和实例变量。
类扩展声明必须在 @implementation在实现。
所以类扩展的成员变量,方法,都不能被外部方法访问。

@interface ViewController (){
    NSInteger _age;
}

- (void)test;

@end
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇逆向工程 - Reveal、IDA、Hopper.. 下一篇功能源代码(扇形进度)及Delegate..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目