目标C中某类的超级

Ant*_*luk 1 class objective-c super superclass

如何向某些超类发送消息?例如:

@interface A: NSObject;

@interface B: A;

@interface C: B;

@implementation C

- (id)init {
  [super init];
}
Run Code Online (Sandbox Code Playgroud)

,其中"超级"是A级,但不是B级

Aug*_*aas 7

您总是可以获得任何类的选择器的IMP,并手动调用它.

@implementation C
- (id)init
{
    IMP a_init = [A instanceMethodForSelector:_cmd];
    return a_init(self, _cmd);
}
@end
Run Code Online (Sandbox Code Playgroud)

你也可以单行, return [A instanceMethodForSelector:_cmd](self, _cmd);

对于记录,_cmd由Objective-C提供给您,并且是SEL当前方法的记录.