我正在研究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 回答
这是一种叫做的方法:
它需要两个参数:
a
UITableView*
a
NSInteger
该方法还采用隐式
self
参数,该参数是调用它的实例 . 正如dreamlax所说,它还需要一个隐含的_cmd
,这是当前被调用的方法 .正如马克所说,如果你符合某个界面,那么不使用某些参数是完全常见的 .
这是一个名为
tableView:rowsInSection:
的方法,UITableView为其委托指定了该方法 . 如果您有一个控制器负责几个UITableViews,那么tableView
参数是存在的,这样它就可以告诉哪个控制器正在与它通信 . 如果您需要查询UITableView以获取信息以决定您想要做什么,这也很有用 . 这在委托方法中非常常见 .此方法符合UITableViewDataSource协议 . 如果您熟悉C#或Java,协议就像interface .
对于符合接口或协议的方法来说,忽略某些参数是完全合法的并且不是太不正常 .