реализация протокольных методов в target-c - PullRequest
2 голосов
/ 17 октября 2010

Если у меня есть протокол (скажем, UIPickerViewDataSource), и я реализую его обязательные методы, нужно ли мне объявлять эти методы в заголовочном файле моего класса?Я получаю предупреждение о неполной реализации (хотя все работает нормально).Если я добавлю необходимые методы в тогда, я не получу такого предупреждения:

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

Это правильное поведение?Действительно ли необходимо добавить объявление для требуемых методов протокола в заголовочный файл моего класса?

Ответы [ 3 ]

4 голосов
/ 17 октября 2010

Нет, нет. Объявить, что класс реализует этот протокол, и реализовать методы достаточно. Тем не менее, вы можете объявить их в заголовке для документации.

3 голосов
/ 17 октября 2010

Правильный способ - объявить, что ваш класс реализует протокол. Например, если ваш класс называется LordSandwichViewController, то интерфейс вашего класса должен выглядеть следующим образом:

@interface LordSandwichViewController : UIViewController <UIPickerViewDataSource> {
{
}

Таким образом, вы не объявляете методы протокола в интерфейсе вашего класса, только протокол.

0 голосов
/ 17 октября 2010

Неполные предупреждения о реализации говорят вам, что вы не реализуете все необходимые методы, которые вы используете:

  1. Определение в заголовке.
  2. Объявление метода, требуемого протоколом, который вы 'соответствует.

Посмотрите, какие методы он ожидает, и реализуйте их.

...