伙计们。在C编程中,如果一个方法没有定义,就会出错。在 Objective-C 编程中,它只会是警告。为什么?例如“[对象方法]”,它是如何编译的?
谢谢。
伙计们。在C编程中,如果一个方法没有定义,就会出错。在 Objective-C 编程中,它只会是警告。为什么?例如“[对象方法]”,它是如何编译的?
谢谢。
[object method]
编译为'传递消息,'方法'到'对象''。
在运行时object
会首先检查它是否有一个带有消息名称的方法。如果确实如此,那么它将执行它。否则,有各种备份机制可以将消息转发给其他人或根据名称发明响应。
[object method]
明确没有编译成的是 C++ 风格的名称修饰之类的__objectClass_Method@4(object)
。在 C 语言中,它会编译为一个objc_msgSend
肯定存在的调用,因为它是由运行时定义的。
除了 Objective-C,JavaScript、Python 和 Ruby 等语言也使用动态调度。
汤米的回答是绝对正确的。但是您可以将警告视为项目设置中的错误