通过isa 指针的讲解,我们知道Objective-C 中的方法调用是在运行时才去绑定的,再进一步看,编译器会把对象消息发送[xxx method]转换为objc_msgSend(id receiver,SEL selector,参数…)的函数调用。因此上面例子中的print 方法你也可以像下面这样调用:
objc_msgSend(person,print_sel,@"++++++++");
当然,这是编译器要做的事情,你在写代码的时候,是不需要直接使用这种写法的。综合isa、SEL、IMP 的讲解,实际上objc_msgSend 的调用过程就应该是这样的。