我正在尝试进行类扩展并从泛型方法调用扩展方法。我只是想知道是否可以这样做?以下是我的代码。
ClassA.h:
@interface ClassA : NSObject
-(void) method;
ClassA.m:
#import "ClassA.h"
-(void) method{
NSLog(@"do A");
}
ClassB.h:
@interface ClassB : ClassA
-(void) method;
ClassB.m:
#import "ClassB.h"
-(void) method{
NSLog(@"do B");
}
和MainClass.m
-(void) doMethod {
ClassA *class = [[ClassB alloc] init];
[class method];
}
我试着这样做,但没有打印出来。是否有可能做到这一点?它会打印出“做B”吗?
答案 0 :(得分:3)
您的代码编译并运行正常(减去 @interface ClassA.h 中应该 @interface ClassA 的小错误):
cristi:tmp diciu$ cat test.m
#import <Cocoa/Cocoa.h>
@interface ClassA : NSObject
- (void) method;
@end
@interface ClassB : ClassA
-(void) method;
@end
@implementation ClassA
-(void) method{
NSLog(@"do A");
}
@end
@implementation ClassB
-(void) method{
NSLog(@"do B");
}
@end
int main()
{
ClassA *class = [[ClassB alloc] init];
[class method];
}
cristi:tmp diciu$ gcc test.m -framework Cocoa
cristi:tmp diciu$ ./a.out
2012-06-21 15:04:22.652 a.out[14408:707] do B
Apple的Objective-C文档包含有关如何在线提供继承的章节here。