Class klass = NSClassFromString(classname);
if ([klass instancesRespondToSelector:@selector(create)]) {
[[klass alloc] create];
}
然而,我可以指出,通过上述操作,你打破了多少糟糕的Objective-C规则吗?例如,永远不要对已分配但未初始化的实例调用方法.Xcode静态分析器会给你各种关于内存泄漏的警告.
更好的 Select 是:
[[[klass alloc] init] create];
但你似乎暗示你不想调用init.
可以考虑一个类方法:[klass create]
,它将返回一个非klass
的实例.那你就先查[klass respondsToSelector:@selector(create)]
再打电话.