动态绑定

前言

之前一直没有理解什么是动态绑定,刚刚看到《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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容