Просто введите новое определение протокола - обычно в файле #h. В Xcode это находится под файлом, New, «Objective-C Protocol».
Вот небольшой пример двух протоколов, а также некоторые необходимые и необязательные методы и свойства. Обратите внимание, что свойства в протоколах должны быть быть синтезированы в классах, соответствующих протоколу, если свойство @required (@required является значением по умолчанию, поэтому его можно оставить без использования, если нет секции @optional).
// AnimalMinionType.h
@protocol AnimalMinionType <NSObject>
@required
@property (nonatomic, getter = isHerbivore) BOOL herbivore;
- (NSString *)genus;
- (NSString *)species;
- (NSString *)nickname;
- (void)doPet;
@optional
- (NSString *)subspecies;
@end
// IdiotType.h
@protocol IdiotType <NSObject>
@optional
- (void)pet:(id<AnimalMinionType>)pet didScratch:(BOOL)scratchy;
@end
// FluffyCat.h
@interface FluffyCat : NSObject <AnimalType>
@end
// FluffyCat.m
@implementation FluffyCat
@synthesize herbivore;
- (NSString *)genus { return @"felis"; }
- (NSString *)species { return @"catus"; }
- (NSString *)nickname { return @"damn cat"; }
- (void)doPet:(id<IdiotType>)anyoneOrAnything
{
NSLog(@"meow");
if ([anyoneOrAnything respondsToSelector:@selector(pet:didScratch:)])
[anyoneOrAnything pet:self didScratch:@YES];
}
@end
// Owner.h
@interface Owner : NSObject <IdiotType>
@property id<AnimalMinionType> housepet;
@end
// Owner.m
@implementation Owner
- (id)init
{
self = [super init];
if (self)
{
self.housepet = [FluffyCat new];
[self.housepet setHerbivore:@NO];
}
return self;
}
- (NSString *)ohACuteAnimalWhatKindIsIt
{
return [NSString stringWithFormat:@"%@ %@",[self.housepet genus], [self.housepet species]];
}
- (void)haveALongDayAtWorkAndJustNeedAFriend
{
if (self.housepet) [self.housepet doPet:self];
}
- (void)pet:(id<AnimalMinionType>)pet didScratch:(BOOL)scratchy
{
if ((scratchy) && (pet == self.housepet))
{
NSLog(@"I HATE THAT %@", [[self.housepet nickname] uppercaseString]);
self.housepet = nil;
}
}
@end
Я надеюсь, что это поможет. :-)
Чтобы уточнить, у вас просто есть файл .h с протоколом. Нет .m-файла. – rmaddy
О да, конечно, но если вы должны были создать новый «Objective-c protocol» в меню файла в Xcode, он будет генерировать только нужные вам файлы, т. Е. Только заголовок (.h), но спасибо за указание на то, что :) –