0

我正在尝试进行类扩展并从泛型方法调用扩展方法。我只是想知道是否有可能做到这一点?下面是我的代码。

类A.h:

@interface ClassA : NSObject

-(void) method;

A.m 类:

#import "ClassA.h"

-(void) method{
    NSLog(@"do A");
}

B类.h:

@interface ClassB : ClassA

-(void) method;

B类.m:

#import "ClassB.h"

-(void) method{
    NSLog(@"do B");
}

在 MainClass.m

-(void) doMethod {
    ClassA *class = [[ClassB alloc] init];
    [class method];
}

我试图做这样的事情,但没有打印出来。是否有可能做到这一点?它会打印出“做B”吗?

4

1 回答 1

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 文档包含关于继承如何工作的章节,可在此处在线获取。

于 2012-06-21T12:21:32.467 回答