我正在研究一本iPhone开发书*而不是真正了解Objective 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出版
更新:我能够找到另一个更详细的SO线程:Method Syntax in Objective C
答案 0 :(得分:4)
这是一个名为:
的方法tableView:numberOfRowsInSection:
需要两个参数:
UITableView*
NSInteger
该方法还采用隐式self
参数,该参数是调用它的实例。正如dreamlax所说,它还需要一个隐式的_cmd
,这是当前被调用的方法。
正如马克所说,如果你符合某个界面,那么不使用某些参数是完全常见的。
答案 1 :(得分:2)
这是一个名为tableView:rowsInSection:
的方法,UITableView为其代理指定。如果你有一个控制器负责几个UITableViews,那么tableView
参数是存在的,这样它就可以告诉哪个控制器正在与它通信。如果您需要查询UITableView以获取信息以决定您想要做什么,这也很有用。这在委托方法中非常常见。
答案 2 :(得分:1)
此方法符合UITableViewDataSource协议。如果您熟悉C#或Java,协议就像interface。
对于符合接口或协议的方法而言,忽略某些参数是完全合法的,并且不是太不正常。