2

我需要和我的搭档分开工作来设计游戏关卡,我们非常需要使用 plist。所以,假设我有 20 种不同类型的类,我需要在运行时动态地实例化对象。将从 plist 输入中选择一个特定的类,并动态创建该类的一个对象。

我想到的第一件事是switch(),我猜这有点过时了。

所以我搜索了 Stack Overflow 并意识到 iOS 有NSClassFromStringobjc_getclass.

经过几次尝试,我可以NSClassFromString说它真的很好,因为我可以在 plist 和 bam 中说出我想要的课程!我们去吧。之后使用 KeyValue 字典设置对象属性,这一切都像魔术一样完成。

+我的问题是,如果您要以这种方式创建对象,我该如何调用类方法(以 开头的方法)?我查过文件,有NSSelectorFromString()。但它不是一个实例而不是一个类吗?

4

2 回答 2

5

NSClassFromString返回类对象而不是类的实例。例如:

Class dateClass = NSClassFromString(@"NSDate"); //get the class object

NSDate *dateInstance = [dateClass date]; //call a class method on the class object
于 2011-02-11T09:15:04.420 回答
2

你可以performSelector:去上课。

例如,您可以调用:

[NSClassFromString(@"UIViewController") performSelector:NSSelectorFromString(@"setToolbarItems:")]
于 2011-02-11T09:16:37.687 回答