首页 文章

有人可以解释这个Objective C方法声明语法

提问于
浏览
5

我正在研究iPhone开发书*而不是真正了解目标C.在大多数情况下,我能够跟踪正在发生的事情,但是有一些方法声明,如下面的那个,我有点麻烦解析 . 例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section {
  return [self.controllers count]; //controllers is an instance variable of type NSArray in this class
}

它看起来这是一个名为numberOfRowsInSection的方法,它返回一个NSInteger,并将NSInteger作为一个本地称为“section”的参数 . 但是我不理解对tableView的所有引用,或者为什么在方法中没有使用它时需要参数 . 有人可以澄清一下吗?谢谢 .

  • P . 258,由Mark和LaMarche开始的iPhone 3开发,由Apress出版

Update: 我能够找到另一个更详细的SO线程:Method Syntax in Objective C

3 回答

  • 1

    这是一种叫做的方法:

    tableView:numberOfRowsInSection:
    

    它需要两个参数:

    • a UITableView*

    • a NSInteger

    该方法还采用隐式 self 参数,该参数是调用它的实例 . 正如dreamlax所说,它还需要一个隐含的 _cmd ,这是当前被调用的方法 .

    正如马克所说,如果你符合某个界面,那么不使用某些参数是完全常见的 .

  • 4

    这是一个名为 tableView:rowsInSection: 的方法,UITableView为其委托指定了该方法 . 如果您有一个控制器负责几个UITableViews,那么 tableView 参数是存在的,这样它就可以告诉哪个控制器正在与它通信 . 如果您需要查询UITableView以获取信息以决定您想要做什么,这也很有用 . 这在委托方法中非常常见 .

  • 2

    此方法符合UITableViewDataSource协议 . 如果您熟悉C#或Java,协议就像interface .

    对于符合接口或协议的方法来说,忽略某些参数是完全合法的并且不是太不正常 .

相关问题