我有一个带有init方法的ObjC类
-(instancetype) initWithApiKey: (NSString *) key order: (NSNumber *) order
在ObjC中,我使用以下代码动态创建它:id classAllocation = [NSClassFromString(@"MyClass") alloc];
NSObject * classInstance = [classAllocation performSelector:@selector(initWithApiKey:order:)
withObject:@"mykey" withObject:@1];
但是我将如何在Swift中做同样的事情? 最佳答案
尝试这个:
if let allocatedObject = NSClassFromString("MyClass")?.alloc() as? NSObject {
let selector: Selector = NSSelectorFromString("initWithApiKey:order:")
let methodIMP: IMP! = allocatedObject.method(for: selector)
let objectAfterInit = unsafeBitCast(methodIMP,to:(@convention(c)(AnyObject?,Selector,NSString,NSNumber)->NSObject).self)(allocatedObject,selector,"mykey", NSNumber(integerLiteral: 1))
}
我的答案中有更多带有细节的示例here