Из того, что вы описываете, должно работать.Поскольку вы не предлагали свою реализацию, мы не сможем сказать, что не так.
На основе этого вопроса я написал пример кода для полиморфизма в Objective-C .
Он содержит полиморфизм, основанный на наследовании, но также и полиморфизм, основанный на формальных и неформальных протоколах.Можете ли вы проверить свой код по этому.
здесь выдержка:
#import <Foundation/Foundation.h>
/*
* 1.: Polymorphism via subclassing
*/
@interface MyBaseClass : NSObject
-(void)printName;
+(NSString*)printableName;
@end
@implementation MyBaseClass
+(NSString *)printableName
{
return NSStringFromClass(self);
}
-(void)printName
{
NSLog(@"%@", [[self class] printableName]);
}
@end
@interface MySubBaseClass : MyBaseClass
@end
@implementation MySubBaseClass
@end
//...
int main (int argc, const char * argv[])
{
/*
* 1.: Polymorphism via subclassing. As seen in any Class-aware OO-language
*/
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
MyBaseClass *myBaseObject = [[MyBaseClass alloc] init];
[myBaseObject printName];
[myBaseObject release];
MySubBaseClass *mySubBaseObject = [[MySubBaseClass alloc] init];
[mySubBaseObject printName];
[mySubBaseObject release];
//...
[pool drain];
return 0;
}