делегат объявлен в интерфейсе / протоколе? - PullRequest
0 голосов
/ 06 июля 2011

не могли бы вы помочь мне понять что-то с делегатами и протоколами:
в этом коде:

          @protocol FirstViewControllerDelegate;  
            @interface FirstViewController : UIVIewController {
            …
            id<FirstViewControllerDelegate> delegate;
            }
            @property (assign) id <FirstViewControllerDelegate> delegate;
  • что означает первая строка "@protocol"?я не вижу в своем проекте этот файл делегата, и текущий файл (с @interface) кажется «простым» интерфейсом для моего FirstViewController, поэтому я немного запутался.
  • явидел, как использовать шаблон делегата, но я никогда не видел, что нам нужно «объявить» делегата в .h, это то, что должно быть записано в файле .h (я говорю об id <....> делегат)?

Спасибо за ваш ответ

Пол

1 Ответ

1 голос
/ 06 июля 2011

@protocol FirstViewControllerDelegate;

в этом формате является предварительным объявлением.Он сообщает компилятору, что FirstViewControllerDelegate является допустимым протоколом, который будет определен позже (иногда чуть дальше в том же файле .h).Это необходимо, потому что без него компилятор будет жаловаться, когда он видит строку

id<FirstViewControllerDelegate>

, поскольку он не видел своего объявления.

Фактический протокол может быть определен примерно как

@protocol FirstViewControllerDelegate
{
@required
  - (void)myImportantDelegateMethod;
}
...