ios& obj-c方法,不需要在头文件中声明

时间:2011-06-28 23:18:53

标签: objective-c ios uipickerview

我正在Lynda.com上查看有关iphone开发的一些视频。

这家伙正在向选择器添加自定义数据,但是为了添加数据,他没有在头文件中声明方法。他正在检查文档中需要哪些方法,并在他的控制器类中复制粘贴那些方法声明。

例如,这个方法

-(int) numberOfComponentsInPickerView: (UIPickerView *) pickerView

为什么我们不需要在头文件中声明这些方法?

如果这些方法属于picker类,为什么我们在控制器类中声明它们而不是简单地在picker IBOutlet实例中调用它们?

TIA

2 个答案:

答案 0 :(得分:1)

当您在标题中声明您遵循某个协议时,您基本上是说您同意实施协议中定义的方法。 我敢打赌他在标题中加了这样的东西:

<UIPickerViewDataSource>

这意味着他正在实施UIPickerViewDataSource协议。

因此,通过实施UIPickerViewDataSource协议,您意味着这些方法,因此,它们不需要原型化。

答案 1 :(得分:1)

  

如果这些方法属于picker类,为什么我们在控制器类中声明它们而不是简单地在picker IBOutlet实例中调用它们?

您引用的方法不属于UIPickerView类,而属于UIPickerViewDataSource协议。您的控制器充当拾取器的“帮助器”,因此如果需要确定应该显示的组件数量,则选择器会调用您的控制器。您通常不会自己调用此方法。

正如another answer指出的那样,通过声明实现协议,隐式声明了该协议的方法。通过向您的界面添加<UIPickerViewDataSource>,您基本上会说“我可以充当选择器视图的数据源,并且我已准备好为任何想要调用协议中声明的方法的选择器”。