Ответ 1
Если я правильно понимаю, что вы говорите, вы можете:
Укажите, что объект должен быть либо экземпляром, либо наследовать от ObjectType, используя:
@protocol MYObjectContainer
- (__kindof ObjectType *)objectAtIndex:(NSUInteger)index;
@end
Укажите, что элементы в коллекции (NSArray, NSSet и т.д.) должны быть экземпляром ItemType (префикс с '__kindof', чтобы также распространить его на объекты, наследуемые от ItemType), используя:
@protocol MYObjectContainer
- (CollectionType <ItemType *> *)objectAtIndex:(NSUInteger)index;
@end
Обратите внимание, что генераторы Objective-C предназначены для предотвращения скрытых ошибок, предоставляя предупреждения компилятора, когда указанный тип не соблюдается. Они не навязывают указанный тип во время выполнения.