我遇到这个问题,让反射从外部框架作为依赖项工作。
所以我想说我有两个项目,一个是示例应用程序项目
SampleApp.xcodeproj
@obj protocol Extension : NSObjectProtocol {
//..Some definitions
}
另一个框架项目将依赖示例应用程序,并且是示例应用程序项目的子模块。
Framework.xcodeproj
class SampleClass : NSObject, Extension {
//some definitions
}
在此框架中,Extension.swift文件(其中定义了扩展协议)包含在构建中作为参考
现在这是此代码的问题
if let customExtension = NSClassFromString("Framework.SampleClass") as? NSObject.Type {
let extensionInstance = customExtension.init()
if extensionInstance is Extension { //The problem here, it returned false at this point
print("It is an Extension")
} else {
print("It is not an Extension")
}
}
我注意到Framework项目中定义的Extension协议被定义为Framework.Extension而不是SampleApp.Extension。我如何将SampleClass类定义为SampleApp.Extension而不是Framework.Extension?