在iPhone中创建运行时类

时间:2011-02-11 09:06:06

标签: ios runtime nsobject

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

我脑子里想到的第一件事就是switch(),我觉得这有点过时了。

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

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

我的问题是,如果你要以这种方式创建对象,我怎样才能调用类方法(那些以+开头的方法)?我查了一下文件,NSSelectorFromString()。但这不是一个实例而不是一个类吗?

2 个答案:

答案 0 :(得分:5)

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

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

NSDate *dateInstance = [dateClass date]; //call a class method on the class object

答案 1 :(得分:2)

您可以在课堂上致电performSelector:

例如,您可以致电:

[NSClassFromString(@"UIViewController") performSelector:NSSelectorFromString(@"setToolbarItems:")]