Угловые скобки в объявлении интерфейса обозначают список Objective-C protocols
, который реализует интерфейс. В этом случае это GameFinder
соответствует протоколу NSNetServiceBrowserDelegate
. Справочник по языку Objective-C содержит полный раздел о протоколах (и это справочник, который вы должны держать под рукой в целом, изучая Objective-C). По сути, протокол - это интерфейс, который описывает методы, которые класс должен реализовать, чтобы соответствовать этому протоколу. Интерфейсы Classe могут объявить, используя обозначение угловой скобки, что они соответствуют (реализуют) протокол. Компилятор проверит соответствие протокола, если вы предоставите информацию о протоколе в объявлениях типа:
@interface Foo <Bar>
...
- (void)methodRequiringBar:(id<Bar>)arg;
@end
@interface Foo2 <Baz>
...
@end
id<Bar> v = [[Foo alloc] init]; //OK
id<Baz> v = [[Foo alloc] init]; //warning
[v methodRequiringBar:[[Foo2 alloc] init]]; //warning
Компилятор также предупредит вас, если интерфейс класса объявляет соответствие протоколу, но не все необходимые методы в этом протоколе реализованы реализацией класса:
@protocol Bar
@required
- (void)requiredMethod;
@optional
- (void)optionalMethod;
@end
@interface Foo <Bar>
...
@end
@implementation Foo
- (void)optionalMethod {
...
}
@end
выдаст предупреждение о том, что протокол Bar
реализован не полностью.