gpt4 book ai didi

ios - 基于 iOS 版本的条件子类化

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:56:43 25 4
gpt4 key购买 nike

这个问题可能有点奇怪,有没有一种方法可以根据 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 默认插件,它就会深深地根植于项目中。

最佳答案

有针对不同版本定义的预处理器宏

#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 中预期的那样在运行时编译不同的类。有两种处理方法:

  • 在运行时创建一个类。为此,您需要编译方法中的全部代码并将其放在一起。

  • 在运行时从已编译的类中选择正确的类(或 Brandon 建议的代码片段)。

有不同的方法可以做到这一点。如果它适合您的结构,您可以拥有一个基类和两个私有(private)子类,并在您决定在基类内部创建实例时创建和交付哪个子类的实例。

关于ios - 基于 iOS 版本的条件子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com