【发布时间】:2015-03-13 17:58:33
【问题描述】:
我有一个问题similar to this one,但我很想知道是否有任何方法(编译器标志、@-directive 等)可以让一个类在编译时将所有可能的属性视为@dynamic,例如您可以针对 any 任意属性进行编码,而无需显式将其声明为 @dynamic。
例如我可以这样做:
myObject.anyPropertyName = someObject;
...就像您在 JavaScript 中所做的一样,无需声明 @dynamic anyPropertyName。
【问题讨论】:
-
我不明白你在问什么,这与你链接的问题不同。你能澄清一下吗?
-
具体来说,我希望我能够使用任何有效的标识符作为点符号属性访问,而不必首先在类上使用
@dynamic它,并将该调用放入覆盖的setValue:forKey:类上的方法。 -
iOS 开发学习的“一切都应该是动态的并且总是在运行时”阶段。 :) 看起来很诱人,但是您将失去所有编译器仔细检查类型和逻辑的能力。在实践中,您最好尽可能依靠编译器来审查您的代码,同时在您的应用程序中编写任何类型的专用动态作为算法(可以在代码中验证)。
-
@bbum 为什么你认为我只是在学习 iOS 开发?除了我们作为开发人员从不停止学习这一事实(我有点怀疑你的意思)之外,我觉得你的说法有些居高临下。我很清楚我在走向一个更有活力的系统时会失去什么。在某些情况下,我很乐意用编译时检查来换取动态编程提供的能力。
-
@devios 正如你所说,我们总是在学习。我之所以这么说,是因为在我作为程序员和教师 25 年的 Objective-C 经验中,我还没有遇到一个好奇的开发人员在某些时候没有走这条路;有时在他们开始时,有时在几十年后。这不是冒犯的意思。
标签: objective-c objective-c-runtime