在objective-c中实现协议方法

时间:2010-10-17 13:50:12

标签: iphone objective-c cocoa cocoa-touch uikit

如果我有一个协议(比如UIPickerViewDataSource)并且我实现了它所需的方法,我是否需要在我的类的头文件中声明这些方法?

目前我没有这样做,我得到一个不完整实施的警告(尽管一切正常)。如果我确实添加了所需的方法,那么我就不会收到这样的警告:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

这是正确的行为吗?是否真的有必要在我的类的头文件中添加所需协议方法的声明?

3 个答案:

答案 0 :(得分:4)

不,你没有。声明该类实现该协议并实现这些方法就足够了。不过,您仍然可以在标题中声明它们以用于文档目的。

答案 1 :(得分:3)

正确的方法是声明您的类实现协议。例如,如果您的类名为LordSandwichViewController,那么您的类接口必须如下所示:

@interface LordSandwichViewController : UIViewController <UIPickerViewDataSource> {
{
}

因此,您不要在类接口中声明协议方法,只声明协议。

答案 2 :(得分:0)

不完整的实施警告告诉您,您没有实施所有必需的方法:

  1. 在标题中定义。
  2. 声明您符合的协议所需的方法。
  3. 看看它期望的方法,并实现它们。