1.为什么要用category(分类或类目)?
有时候我们需要扩展一下现有的类,增加一下功能,如果有源码,修改一下即可,如果是第三方的类库,就需要category它
的主要作用就是为没有源代码的类添加方法。
步骤:新建文件 选择Objective-C Category模板 填写类目和分类名 在.h文件中添加方法声明 在.m添加方法的现
在需要使用的地方进行调用。
Category是非正式协议,我么可以在里面添加方法,但是不可以在其中添加成员变量,也就是不能添加属性。
2. category的优缺点?
优点:可以简单的实现为某个类添加方法的情形,减轻了类的设计的难度
缺点:(1)无法增加新的成员变量 (2)由于代码很分散,容易出bug,当方法名出现重名时,类别的优先级是高于类本身
的,也就是说,如果类有一个foo()的方法,category也有一个foo()的方法,而我们使用foo()方法时,调用的是catego
ry的foo()方法。
所有cayegory的主要用途有三个:将类的实现代码分散到多个不同的文件和框架中,创建对死以后的方法的前向引用,向对
象添加非正式协议。简化类的开发(当一个类需要多个程序协同,Category可以将同一个类根据用途分别放在不同的源文件
中,从而便于程序员独立开发相应的方法集合)。
3.Extension(延展)?
Extension的主要作用是为类添加“私有”方法。它的语法格式个Category很相似,相当于把Category的。h文件挪到了原始
类的.m文件中,它主要是针对自己的类,必须有源代码的类。格式就是:在xxx.m文件中,@interface xxx(ExtensionNa
me)//你的方法列表 @end
4.protocol和delegate
protocold又叫协议是iOS开发中常用的技术,协议中是一套方法的声明,只有.h文件,接受协议的对象实现协议中定义的
方法。
协议定好以后,需要有类去遵守这个协议,实现协议里的方法,遵守协议即在.h的父类名后写上<协议名>,实现协议里的方
法即在。m文件中实现协议中的方法,相当于给这个类添加了若干个方法,
转载于:https://my.oschina.net/u/2322034/blog/402522