【问题标题】:What is @interface UITableView (MyTableViewDelegate)什么是@interface UITableView (MyTableViewDelegate)
【发布时间】:2012-08-14 14:00:06
【问题描述】:
我正在查看其他人编写的一些源代码,这让我很感兴趣:
@interface UITableView (MyTableViewGestureDelegate)
现在我以前只看到过这个:
@interface MyTableView : UITableView <MyTableViewGestureDelegate>
所以我有点困惑。
关于我在看什么的任何想法?
本
【问题讨论】:
标签:
iphone
objective-c
cocoa
ipad
【解决方案1】:
它是类category 声明 - 使用类别,您可以将类实现拆分为多个文件或向现有类添加方法。
【解决方案2】:
这是一个类别声明。
类别允许您将方法添加到现有类——甚至是一个
您没有来源。类别是强大的
允许您扩展现有功能的功能
没有子类的类。使用类别,您还可以分发
在多个文件中实现您自己的类。班级
扩展是类似的,但允许附加所需的 API
在主类以外的位置为类声明
@interface 块。
类别接口的声明看起来很像类接口声明——除了类别名称列在类名称之后的括号内,并且没有提及超类。除非它的方法不访问该类的任何实例变量,否则该类别必须为其扩展的类导入接口文件:
一般语法:
#import "ClassName.h"
@interface ClassName ( CategoryName )
// method declarations
@end
请注意,类别不能为该类声明额外的实例变量;它只包括方法。但是,类范围内的所有实例变量也在类别范围内。这包括类声明的所有实例变量,甚至是声明为@private 的实例变量。
可以添加到类中的类别数量没有限制,但每个类别名称必须不同,并且每个类别都应声明和定义一组不同的方法。
请检查link和Example
【解决方案3】:
MyTableView : UITableView < MyTableViewGestureDelegate > 表示您的 MyTableView 类 - UITableView 的子类 - 实现了名为 MyTableViewGestureDelegate
的
protocol
UITableView (MyTableViewGestureDelegate) 表示您正在为名为 MyTableViewGestureDelegate 的类 UITableView 创建一个类别