ios - 你如何为不同的 iOS 版本提供不同的类声明?
问题描述
我的应用需要以 iOS 12 为目标,但在可用时使用 iOS 13 的功能(尤其是 Catalyst 的菜单)。
我已使用 @available 属性将我的 AppDelegate 标记为在 iOS 13+ 中可用;我想我将其视为此处另一篇文章的解决方案。但是我的应用程序在 iOS 12 上崩溃了,因为它仍然调用 iOS 12 中不可用的 iOS 13 函数(UIWindow 的 overrideUserInterfaceStyle)。这似乎是一个错误,但是......为什么应用程序甚至在 iOS 12 下启动,当我将其整个代理标记为仅 iOS 13+ 时?
为 iOS 13 之前的版本提供类的替代定义的正确方法是什么?如果我在同一个文件中创建另一个声明但用@available(iOS 12, *) 标记它,编译器会抱怨重复定义。
我可以用@available 而不是整个类来标记每个有问题的方法,但是当您遇到旧操作系统版本中不可用的类型的存储属性时,这会崩溃;编译器抱怨您不能通过将 @available 放在存储属性上来使存储的属性可能不存在。
解决方案
推荐阅读
- kotlin - 从 kotlinc -Xbuild-file 参数引用的文件的 XML 格式的文档
- typescript - 在 TypeScript 中,为什么键入 tsc 和 tsc FILENAME 有区别
- javascript - Dynamics CRM javascript 获取字段级安全性
- php - 如何在 AJAX 中使用相同的触发器显示 2 条不同的消息?
- sas - SAS 从存档中查找去年的数据
- tensorflow - 如何在每个具有多个 CPU 的多个节点上运行 TensorFlow
- python - 如何确定列表是否包含彼此相邻的 3 个偶数或 3 个奇数?
- jquery - 如何将数字添加到rateyo星星中?
- vba - 使用vba宏从文件夹中txt文件的标题中删除2行
- python - CFD 边界条件