这个问题可能有点奇怪,有没有办法根据 iOS 版本有条件地进行子类化,本质上是:
if(iOS version >= 9) {
@interface CDVWKWebViewEngine : CDVPlugin <CDVWebViewEngineProtocol, WKScriptMessageHandler, WKNavigationDelegate>
} else if(iOS version = 8) {
@interface CDVWKWebViewEngine : CDVPlugin <WKScriptMessageHandler, WKNavigationDelegate>
}
我有 iOS Cordova WkWebView Engine plugin并想回退到 iOS 8 下的 UIWebView(忽略 iOS 8 上的插件)。
我发现有条件地使用这个插件是相当棘手的,因为一旦它继承了 UIWebView 默认插件,它就深深地根植于项目中。
Best Answer-推荐答案 strong>
有针对不同版本定义的预处理器宏
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
// code to compile for iOS 9 or greater
#else
// code to compile for les than iOS 9
#endif
如果您想在运行时做出决定,可以使用 -systemVersion (UIDevice ) .
当然,在运行时编译一个不同的类是不可能的,就像你在 Q 中想要的那样。有两种方法来处理它:
有不同的方法可以做到这一点。如果它适合您的结构,您可以拥有一个基类和两个私有(private)子类,并在您决定在基类中创建实例时,决定创建和交付哪个子类的哪个实例。
关于ios - 基于 iOS 版本的条件子类化,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/37633801/
|