【发布时间】:2015-01-05 18:59:32
【问题描述】:
为什么 Objective-C 编译器需要在编译时知道将在对象上调用的方法的签名,而它可以将其推迟到运行时(即动态绑定)?比如我写[foo someMethod],为什么编译器需要知道someMethod的签名呢?
【问题讨论】:
-
据我了解,Objc 喜欢在运行前捕获此类潜在错误(因为这会导致崩溃),因此它更加强调预编译错误检查。
-
如果您声明一个指向特定类对象的指针,编译器将验证该类是否实现了使用该指针调用的任何方法。如果您将其声明为简单的
id,编译器将仅验证命名方法是否存在某处。 -
第一个问题很好;欢迎来到 Stack Overflow!
标签: objective-c objective-c-runtime method-signature