在Objective-C中在运行时创建类有什么意义?

时间:2012-10-16 08:02:44

标签: objective-c ios runtime objective-c-runtime

我最近重读了Mike Ash关于如何在tutorial创建课程的有趣Objective-C Runtime

我很长一段时间以来一直想知道在哪里应用这种强大的语言功能。对于我脑海中出现的大部分想法,我总是看到一个过度的解决方案,最后我会继续NSDictionary。在运行时使用创建类的情况是什么?我看到的唯一一个是Obj-C翻译......更多想法?

3 个答案:

答案 0 :(得分:6)

当有人需要在运行时创建类

时,我会看到一些可能的选项
  • 隐藏有关它的信息(在大多数情况下无效,但......你可以)
  • 执行多重继承(如果你真的需要它:)
  • 使用您自己的语言(即类似XML),可以由您的程序解释,用Obj-C编写(类似NSProxy,但更好。)
  • 创建一些可以改变它在运行时的行为的动态类

一般而言......有一些可能的用法。但在现实世界中,在默认服务应用程序中,没有必要这样做,实际上:)

答案 1 :(得分:0)

它可以用于例如Core Data或任何与数据库相关的API,以创建在编译时未知的新对象类。但是,我怀疑这是经常使用的,它主要是系统在运行程序时使用的机制...

答案 2 :(得分:0)

Cocoa框架中的KVO是通过动态创建类的“通知”版本来实现的。见http://www.mikeash.com/pyblog/friday-qa-2009-01-23.html