我需要与我的伙伴分开我的工作来设计游戏阶段,我们非常需要使用plist。所以,假设我有20种不同类型的类,我需要在运行时动态地实例化对象。将从plist输入中选择一个特定的类,并且将动态创建该类的对象。
我脑子里想到的第一件事就是switch()
,我觉得这有点过时了。
所以我搜索了Stack Overflow并意识到iOS有NSClassFromString
和objc_getclass
。
经过几次尝试,我可以告诉NSClassFromString
真的很好,因为我可以在plist和bam中说出我想要的课程!我们走了之后使用KeyValue字典设置对象属性,并且它们都像魔术一样完成。
我的问题是,如果你要以这种方式创建对象,我怎样才能调用类方法(那些以+
开头的方法)?我查了一下文件,NSSelectorFromString()
。但这不是一个实例而不是一个类吗?
答案 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:")]