【问题标题】: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 的实例变量。

      可以添加到类中的类别数量没有限制,但每个类别名称必须不同,并且每个类别都应声明和定义一组不同的方法。

      请检查linkExample

      【讨论】:

        【解决方案3】:

        MyTableView : UITableView &lt; MyTableViewGestureDelegate &gt; 表示您的 MyTableView 类 - UITableView 的子类 - 实现了名为 MyTableViewGestureDelegate

        protocol

        UITableView (MyTableViewGestureDelegate) 表示您正在为名为 MyTableViewGestureDelegate 的类 UITableView 创建一个类别

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-21
          • 2016-04-11
          • 2010-09-13
          • 1970-01-01
          • 2018-04-17
          相关资源
          最近更新 更多