美文网首页
一道iOS面试题?

一道iOS面试题?

作者: Just丶Go | 来源:发表于2020-08-04 17:24 被阅读0次

    故事背景:
    这个是自己在复习KVO时,偶然想到的(就是虾基霸写的),类似的面试题应该有小伙伴遇到过~

    @interface ViewController ()
    @end
    @implementation ViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        Person *p = [Person new];
        [p setValue:@"aa" forKey:@"name"];
        [p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
    
        Method m = class_getInstanceMethod([self class], @selector(log));
        const char *className = object_getClassName(p);
        NSString *name = [[NSString alloc] initWithUTF8String:className];
        class_addMethod(NSClassFromString(name), method_getName(m), method_getImplementation(m), method_getTypeEncoding(m));
        
        [p performSelector:method_getName(m)];
    }
    
    - (void)log
    {
        NSLog(@"self: %s", object_getClassName(self));
    }
    
    @end
    

    代码如上
    问题:方法log会打印什么?

    PS:该题涉及到KVO原理,消息发送原理以及类结构中的ISA指针三个知识点

    相关文章

      网友评论

          本文标题:一道iOS面试题?

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