与C#相比,在Objective C中实现协议的语法?

时间:2012-05-10 14:37:45

标签: c# objective-c

我公司的意外事件导致我被选中在短时间内编写和发布iphone应用程序,虽然我没有Objective C的经验。我在使用一些语法时遇到了麻烦: / p>

我有以下方法定义:

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath {

}

它位于使用此接口定义的类中:

@interface TableExampleViewController : UIViewController 
    <UITableViewDelegate, UITableViewDataSource>
{
    NSArray *lightbulbs;
}

方法声明是什么意思?我了解UITableViewCell *)是返回类型,cellForRowAtIndexPath是方法名称,(NSIndexPath *) indedPath是参数,但tableView:(UITableView *)tableView的意义是什么?我假设它与该类实现的协议有关。 c#中的等效语法是什么?

3 个答案:

答案 0 :(得分:4)

在Objective-C中,方法名称包含所有参数名称,因此方法的名称为

tableView:cellForRowAtIndexPath:

包括冒号:

它与协议实现无关 - 它只是在Objective-C中命名方法的方式。所以假想的C#等价物只是

UITableViewCell tableViewcellForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath)

答案 1 :(得分:2)

tableView: cellForRowAtIndexPath:

是方法名称,它与c#的命名不同。在c#中,方法定义可能是

UITableViewCell GetCellFromTableViewAtIndexPaht(UITableView tableView, NSIndexPath indexPath)

答案 2 :(得分:1)

这是委托设计模式。基本上,UIViewController类中的UITableView实例要求视图控制器为指定的索引提供UITableViewCell。因此,假设您在视图控制器中有一系列歌曲,并且您希望它们显示在表格视图中。然后你将创建一个新的UITableViewCell,将它的textLabel.text设置为指定索引(indexPath.row)的歌曲标题并返回单元格。因为出于性能原因你应该重用UITableViewCells,我建议你阅读文档中的Table View Programming Guide,特别是Populating a Table View