使用Category需要注意的点:
(1) Category的方法不一定非要在@implementation中实现,也可以在其他位置实现,但是当调用Category的方法时,依据继承树没有找到该方法的实现,程序则会崩溃。
(2) Category理论上不能添加变量,但是可以使用@dynamic 来弥补这种不足。
Extension非常像是没有命名的类别。
Extension中的方法必须在@implementation中实现,否则编译会报错。
分类和类扩展的相似之处是:都可以为类添加一个额外的方法;
不同之处在于:要添加额外方法,分类(Category必须在第一个@interface中声明方法,并且在@implementation中提供实现,不然运行时出错。而类扩展(Class Extensions),你添加的方法是一个required API,如果不去实现,编译器会警告,而且这个方法的声明可以不在第一个@interface中去声明。
时间: 2024-10-11 11:01:09