1

伙计们。在C编程中,如果一个方法没有定义,就会出错。在 Objective-C 编程中,它只会是警告。为什么?例如“[对象方法]”,它是如何编译的?

谢谢。

4

2 回答 2

4

[object method]编译为'传递消息,'方法'到'对象''。

在运行时object会首先检查它是否有一个带有消息名称的方法。如果确实如此,那么它将执行它。否则,有各种备份机制可以将消息转发给其他人或根据名称发明响应。

[object method]明确没有编译成的是 C++ 风格的名称修饰之类的__objectClass_Method@4(object)。在 C 语言中,它会编译为一个objc_msgSend肯定存在的调用,因为它是由运行时定义的。

除了 Objective-C,JavaScript、Python 和 Ruby 等语言也使用动态调度。

于 2013-01-15T02:16:25.297 回答
2

汤米的回答是绝对正确的。但是您可以将警告视为项目设置中的错误

在此处输入图像描述

于 2013-01-15T03:22:48.247 回答