1.消息机制
在静态语言中,调用一个方法会直接跳转到该方法的实现部分执行,在编译时就决定好了。而在 Objective-C 中,在对象上调用方法,实际是发送了一条消息,消息有:名称(name)或者选择子(selector),可以接受参数,也有可能有返回值。
在Objective-C 中, [object foo] 语法并不会立即执行 foo 这个方法的代码。它是在运行时给 object 发送一条叫foo 的消息。[object foo]会被编译器翻译成一条标准的C语言函数调用:objc_msgSend(object, foo, ...)。objc_msgSend定义如下:
void objc_msgSend(id self,SEL op, ...)
2.动态绑定
在objective-c中,一个对象内否调用指定的方法不是由编译器决定而是由运行时决定,这被称作是方法的动态绑定。
网友评论