我需要和我的合作伙伴分工设计游戏阶段,我们非常需要使用 plist。所以,假设我有 20 种不同类型的类,我需要在运行时从中动态实例化对象。将从 plist 输入中选择一个特定的类,并且将动态创建该类的对象。
我首先想到的是 switch()
,我猜它有点过时了。
所以我搜索了 Stack Overflow,发现 iOS 有 NSClassFromString
和 objc_getclass
。
- Create a class at runtime - Why do NSClassFromString AND objc_getclass return nil ?
- NSClassFromString returns nil
经过几次尝试,我可以说 NSClassFromString
非常好,因为我可以在 plist 和 bam 中预先说出我想要的类!我们开始了。之后设置对象属性是用 KeyValue 字典完成的,这一切都像变魔术一样完成。
我的问题是,如果您要以这种方式创建对象,我该如何调用类方法(以 +
开头的方法)?我查阅了文档,发现有 NSSelectorFromString()
。但它不是针对实例而不是类吗?
最佳答案
NSClassFromString
返回类对象而不是类的实例。例如:
Class dateClass = NSClassFromString(@"NSDate"); //get the class object
NSDate *dateInstance = [dateClass date]; //call a class method on the class object
关于ios - iPhone 中的运行时类创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4967219/