代码之家  ›  专栏  ›  技术社区  ›  theprole

在目标C中实现协议方法

  •  2
  • theprole  · 技术社区  · 14 年前

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

    目前我没有这样做,我得到了一个不完全实现的警告(尽管一切都正常)。如果我在中添加了所需的方法,则不会收到此类警告:

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

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

    3 回复  |  直到 14 年前
        1
  •  4
  •   Ferruccio    14 年前

    不,您不需要。声明类实现了该协议并实现了方法就足够了。不过,出于文档的目的,您仍然可以在头中声明它们。

        2
  •  3
  •   Rits    14 年前

    正确的方法是声明类实现了协议。例如,如果调用了类 LordSandwichViewController ,则类接口必须如下所示:

    @interface LordSandwichViewController : UIViewController <UIPickerViewDataSource> {
    {
    }
    

    所以您不需要在类接口中声明协议方法,只声明协议。

        3
  •  0
  •   jer    14 年前

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

    1. 在标题中定义。
    2. 声明您符合的协议所需的方法。

    看看它期望使用什么方法,并实现这些方法。