【发布时间】:2013-08-10 02:41:20
【问题描述】:
在 Objective-C 的 Wiki 页面中,有一个名为 Messages 的部分。它说编译时,Objective-C 不关心对象是否具有给定方法,因为任何人都可以向另一个对象发送消息。这是动态绑定。
在 C++ 中,obj->方法(参数);如果没有方法,那就错了。 在 Objective-C 中,[obj 方法:参数];如果没有方法,也可以。
但是在我的日常编码中,使用 XCode,如果编译器找不到对象的公共方法,它甚至在构建之前总是提示错误。像这样,
“ClassName”没有可见的@interface 声明选择器“methodName”
我对这个“矛盾”有点困惑。如果问题很愚蠢,请原谅我。提前致谢。
【问题讨论】:
-
即使在 ARC 之前,如果您尝试调用未定义的方法,编译器也会发出警告。除其他事项外,这还提供了极大的便利——您知道自己在编码时输入错误,而必须深入测试会话才能发现您输入的是 x 而不是 s。
标签: ios objective-c