1.Gategory(分类、类别):是不改变原类的基础上,给类添加新的方法。
作用:1⃣可以讲一个庞大的类分模块开发
2⃣对现有类进行方法的扩展
3⃣对类中的方法有归档类的作用。
注意事项:
1⃣分类中只能增加方法,不能在类中增减实例变量
2⃣分类和原类中的方法名具有相同的方法名,优先执行分类中方法。
3⃣如果有多个分类也有相同方法名,这时会根据编译最后的分类中的方法执行。
4⃣分类的方法中,可以使用实例变量。
5⃣在分类中可以声明@proprey参数,但是编译的时候会报错。
定义方式:
在.h文件中
@interface 类名 (分类名)
//声明方法
@end
在. m文件中
@implementtation 类名 (分类名)
//实现相应的方法
@end
2.非正式协议
非正式协议是一个特别的分类,它是给NSSobject类或者Foundation增加方法的分类,在分类中指声明方法,在子类中具体实现方法。
3.类扩展
类扩展(Class Extendsion)是一个特别的分类,又称匿名类,它是一个没有名字的分类。
类扩展特点:
1⃣我们不需要指定它的名字
2⃣可以在源代码的类中使用,在ui编写代码中在 .m文件中写。
3⃣可以创建它的数量不限,而且在类扩展中可以添加实例变量并能修改只读属性改为读写属性。
4. 分类 和 类扩展的区别
分类需要名字、不可以有实例变量。
类扩展不要名字,可以在源代码的类中,修改只读属性为读写属性、可以使用实例变量。