【问题标题】:Objective C class declaration syntaxObjective C 类声明语法
【发布时间】:2012-09-27 18:04:01
【问题描述】:

我需要一些帮助来理解 Objective C 中的类声明语法, 或者更具体的

@interface SomeViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

UITableViewDataSource,UITableViewDelegate 是什么意思

我的理解是在类实例化的时候接收到这两个对象。如果我错了请指正..

【问题讨论】:

  • 其实UITableViewController已经符合UITableViewDataSourceUITableViewDelegate的协议。所以在这里指定它们是多余的

标签: objective-c class interface uitableview objective-c-protocol


【解决方案1】:

UITableViewDataSourceUITableViewDelegate 是两个协议,而不是类(或对象)。

当您声明一个类时,您可以使用&lt; &gt; 括号语法指定您的类实现的任意数量的协议。

协议是必需或可选方法的列表。将协议添加到类声明中实际上并没有实现或声明该协议中的任何方法。你必须自己做。但是,如果您没有实现所需的协议方法,则会收到编译器警告。

【讨论】:

    【解决方案2】:

    当你声明一个类时,语法允许你指定一个类必须遵守的协议列表。

    协议是您的类必须实现的一组方法(您也可以指定可选方法)。它们只有方法声明,但程序员必须在他的类中实现它们。协议在 Objective-C 中非常重要,因为它们是委托模式的核心。

    在这种特定情况下,UITableViewDelegate 是一个处理 UITableViews 的对象必须遵守的协议。表格视图代表负责控制表格及其单元格,例如设置它们的高度、附件等。

    UItableViewDataSource 是一个向表格视图提供数据的对象必须遵守的协议。符合此协议的对象负责返回将在表格视图中显示的数据。

    在需要时不使用协议会产生警告,迟早会使您的应用崩溃。

    【讨论】:

      【解决方案3】:

      UITableViewDataSource 和 UITableViewDelegate 是协议。要了解什么协议,请参阅this。协议类似于 Java 中的接口。

      @interface SomeViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
      

      这一行只表示你声明了一个类“So​​meViewController”,它继承自“UITableViewController”并采用两个协议:UITableViewDataSource 和 UITableViewDelegate

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-08
        • 1970-01-01
        • 2012-10-15
        • 2015-04-20
        • 1970-01-01
        • 2011-06-22
        • 1970-01-01
        相关资源
        最近更新 更多