Протокол objc очень похож на интерфейс Java.
Точкой блокировки может быть то, как вы ожидаете, что вещи на самом деле связаны друг с другом - или синтаксис протокола.
Объявление протокола:
@protocol ServiceHelperProtocol
- (void)help;
@end
Используйте его в классе:
@interface SomeClass : NSObject
- (id)initWithServiceHelper:(id<ServiceHelperProtocol>)inServiceHelper;
@end
@implementation SomeClass
- (id)initWithServiceHelper:(id<ServiceHelperProtocol>)inServiceHelper
{
self = [super init];
if (nil != self) {
[inServiceHelper help];
}
return self;
}
@end
MONHelper
принимает протокол:
@interface MONHelper : NSObject < ServiceHelperProtocol >
...
@end
@implementation MONHelper
- (void)help { NSLog(@"helping..."); }
@end
Используется:
MONHelper * helper = [MONHelper new];
SomeClass * someClass = [[SomeClass alloc] initWithServiceHelper:helper];
...