3
@interface A : NSObject

- (void) tmp;
- (void) foo;

@end

@implementation A

- (void) tmp {
    [self foo];
}

- (void) foo {
    NSLog(@"A");
}

@end

派生クラス

@interface B : A

- (void) foo;

@end

@implementation B

- (void) foo {
    NSLog(@"B");
}

@end

コード

B * b = [[B alloc] init];
[b tmp]; // -> writes out B

Aを実装する方法があるので、クラスAの[selftmp]内で[selffoo]を呼び出すと、B:fooではなくA:fooが呼び出されます。

(したがって、[b foo] == @ "B"を呼び出した後、および[b tmp] == @ "A"を呼び出した後の出力)

のようなsmth

@implementation A

- (void) tmp {
    [ALWAYS_CALL_ON_A foo];
}
4

2 に答える 2

1

使用できますsuper

@implementation B

- (void) tmp {
     [super foo];
}
@end
于 2012-07-04T09:55:52.213 に答える
0

クラスメソッドを使用する

@interface A : NSObject {

}
- (void) tmp;
+ (void) foo;
@end

@implementation A
- (void) tmp {
    [A foo];
}

+ (void) foo {
    NSLog(@"A");
}
@end
#import "A.h"
@interface B : A {

}
+ (void) foo;
@end

@implementation B
+ (void) foo {
    NSLog(@"B");
}

@end
于 2012-07-04T09:58:57.260 に答える