【发布时间】:2009-11-08 17:01:11
【问题描述】:
Objective-C 使用动态绑定:即方法调用在运行时解决。
很好。
还有use of dot notation really boils down to a method call
但是,为什么我不能这样做:
#import当我听到“动态绑定”时,我在想“所以它应该表现得像一种脚本语言”, 我很惊讶 Objective-C 与 JavaScript 这样的脚本语言相比显得多么不灵活.
【问题讨论】:
-
您将动态绑定与蛋糕混淆了。 蛋糕是个谎言。
-
“方法调用在运行时解决” 应该真正被认为是“消息调度发生在运行时”。整个 点运算符 的使用更像是一种 hack。
-
没有什么骇人听闻的;它是方法调用的一个非常明确的同义词,具有一个额外的约束,即类型必须是众所周知的。 (无论人们是否喜欢这个点或认为它是一个很好的补充完全是意见 - 没有评论:)。
-
说点运算符不是hackish,因为它“定义非常明确”就像说三元组不是hackish,因为“它们在标准中得到了很好的定义”。你可以做
[(id)exc name],但你不能做(id)exc.name的原因是它是一个黑客的原因之一,也是一个糟糕的、考虑不周的黑客。提供不止一种方法来做同样的事情通常是个坏主意,而且这两种方法不对称的事实会导致很多问题和混乱。
标签: objective-c dynamic-binding