rma*_*ddy 9 objective-c ios swift xcode11 mac-catalyst
我在 Catalina (10.15) 的 GM 版本上使用 Xcode 11。我正在为 Mac Catalyst 构建我的 iOS 应用程序。我的 iOS 应用程序的部署目标是 iOS 11。
我在视图控制器中有一条简单的行,例如:
self.modalInPopover = YES;
Run Code Online (Sandbox Code Playgroud)
在 iOS 中编译干净。当我切换到“我的 Mac”目标时,我收到一个弃用警告:
'modalInPopover' 已弃用:首先在 macCatalyst 13.0 中弃用
好的。我可以切换到 iOS 13 中添加的新方法:
self.modalInPopover = YES;
Run Code Online (Sandbox Code Playgroud)
那应该可以解决它,但我仍然modalInPopover在else块中使用时收到相同的弃用警告。
奇怪的是,对应的 Swift 代码没有给出任何警告。只有 Objective-C 代码继续发出警告。
if (@available(iOS 13.0, *)) {
self.modalInPresentation = YES;
} else {
self.modalInPopover = YES;
}
Run Code Online (Sandbox Code Playgroud)
我什至尝试将其更新@available为:
if (@available(iOS 13.0, macCatalyst 13.0, *)) {
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何事情。
以下灾难解决了问题,但不需要它:
if #available(iOS 13, *) {
self.isModalInPresentation = true
} else {
self.isModalInPopover = true
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么还是这是一个 Xcode 错误?如何消除Objective-C中的弃用警告而不使用#if TARGET_OS_MACCATALYSTSwift中不需要的重复代码。
\n\n\n我的 iOS 应用程序的部署目标是 iOS 11。
\n
这就是原因。要在 Swift 中查看弃用警告,您需要在部署目标为 iOS 13 的子句中说isModalInPopovernot 。available
对于 Catalyst 版本,您不向后兼容(没有向后),因此就好像这是 iOS 13 部署目标,并且您会看到警告。
\n| 归档时间: |
|
| 查看次数: |
2681 次 |
| 最近记录: |