Для экземпляров объектов мы можем сделать так, чтобы их класс объявил о соответствии некоторого протокола следующим образом:
@protocol P <NSObject>
- (void) someMethod ;
@end
@interface C : NSObject <P>
@end
@implementation C
- (void) someMethod {
}
@end
А как насчет классов?
Я нахожусь в такой ситуации:
...
Class c = [self modelClass:kind] ;
if (c) {
model = [c performSelector: @selector(decode:)
withObject: [SExpIO read: [fm contentsAtPath:target]]] ;
}
и я хотел бы, чтобы у меня был способ объявить о существовании такой вещи, как протоколы для методов классов.
В приведенном выше примере все классы, которые могут быть классом экземпляра (Хммм)??) из, объявлять
+ (id) decode: (SExp *) root ;
Есть ли способ, которым я мог бы преобразовать вышеупомянутое в:
if (c) {
model = [c decode: [SExpIO read: [fm contentsAtPath:target]]]
}
, используя подходящее объявление "протокола класса"?