我正在查看其他人编写的一些源代码,这让我很感兴趣看到这一行:
@interface UITableView (MyTableViewGestureDelegate)
现在我以前只看到过这个:
@interface MyTableView : UITableView <MyTableViewGestureDelegate>
所以我很困惑。
关于我在看什么的任何想法?
本
我正在查看其他人编写的一些源代码,这让我很感兴趣看到这一行:
@interface UITableView (MyTableViewGestureDelegate)
现在我以前只看到过这个:
@interface MyTableView : UITableView <MyTableViewGestureDelegate>
所以我很困惑。
关于我在看什么的任何想法?
本
它是类类别声明 - 使用类别,您可以将类实现拆分为多个文件或向现有类添加方法。
这是一个类别声明。
类别允许您将方法添加到现有类——甚至是您没有源代码的类。类别是一个强大的功能,它允许您扩展现有类的功能而无需子类化。使用类别,您还可以在多个文件中分发您自己的类的实现。类扩展类似,但允许在主类@interface 块内以外的位置为类声明额外的必需 API。
类别接口的声明看起来很像类接口声明——除了类别名称列在类名称后面的括号内,并且没有提及超类。除非其方法不访问该类的任何实例变量,否则该类别必须为其扩展的类导入接口文件:
一般语法:
#import "ClassName.h"
@interface ClassName ( CategoryName )
// method declarations
@end
请注意,类别不能为该类声明额外的实例变量;它只包括方法。但是,类范围内的所有实例变量也在类范围内。这包括类声明的所有实例变量,甚至是声明为@private 的实例变量。
可以添加到类中的类别数量没有限制,但每个类别名称必须不同,并且每个类别都应声明和定义一组不同的方法。
MyTableView : UITableView < MyTableViewGestureDelegate >
说你的类 MyTableView - UITableView 的子类 - 实现了名为的协议MyTableViewGestureDelegate
UITableView (MyTableViewGestureDelegate)
说您正在为名为的类创建一个类别UITableView
MyTableViewGestureDelegate