@protocol FirstViewControllerDelegate;
в этом формате является предварительным объявлением.Он сообщает компилятору, что FirstViewControllerDelegate
является допустимым протоколом, который будет определен позже (иногда чуть дальше в том же файле .h).Это необходимо, потому что без него компилятор будет жаловаться, когда он видит строку
id<FirstViewControllerDelegate>
, поскольку он не видел своего объявления.
Фактический протокол может быть определен примерно как
@protocol FirstViewControllerDelegate
{
@required
- (void)myImportantDelegateMethod;
}