动态绑定

作者: 2a72d6a1ee5a | 来源:发表于2016-03-18 20:46 被阅读0次

前言

之前一直没有理解什么是动态绑定,刚刚看到《Objective-C全解》的大概了解了

什么是动态绑定

程序执行时才确定对象的属性和需要响应的方法。运行时系统首先确定接收者的类型,然后根据消息名在类的方法表里选择相应的方法执行,如果没有找到父类中继续寻找。如果没有找到则,报告错误。

@interface A : NSObject  
- (void)whoAreYou;
@end
@implementation A
- (void)whoAreYou {
    NSLog( @"I'm A" );
}
@interface B : NSObject  
- (void)whoAreYou;
@end
@implementation B
- (void)whoAreYou {
    NSLog( @"I'm B" );
}
int main(int argc, const char * argv[]){
@autoreleasepool {
    id obj;
    int n;
    scanf("%d", &n);
    switch ( n ) {
        case 0:
            obj = [[A alloc] init];
            break;
        case 1:
            obj = [[B alloc] init];
            break;
        case 2:
            obj = [[NSObject alloc] init];
            break;
        default:
            break;
    }
    [obj whoAreYou];
}
  return 0;
}

相关文章

网友评论

    本文标题:动态绑定

    本文链接:https://www.haomeiwen.com/subject/pdhhlttx.html