Используйте категорию для каждой реализации протокола. Я использую это, когда у меня есть сложные viewControllers.
Например, у меня есть категория, которая реализует протокол NSTextDelegate.
Итак, MyComplexViewController + NSTextDelegate.h:
#import "MyComplexViewController.h"
@interface MyComplexViewController (NSTextDelegate) <NSTextDelegate>
@end
и MyComplexViewController + NSTextDelegate.m:
#import "MyComplexViewController+NSTextDelegate.h"
@implementation MyComplexViewController (NSTextDelegate)
- (BOOL)textShouldBeginEditing:(NSText *)textObject{
...
}
- (BOOL)textShouldEndEditing:(NSText *)textObject{
...
}
- (void)textDidBeginEditing:(NSNotification *)notification{
...
}
- (void)textDidEndEditing:(NSNotification *)notification{
...
}
- (void)textDidChange:(NSNotification *)notification{
....
}
@end
Затем я беру все заголовки для определения основного класса и категории и объединяю их в один заголовок, который затем импортирую, где мне нужно использовать класс.