gpt4 book ai didi

ios - Mac Catalyst中的弃用警告,但仅在Objective-C中,而不在Swift中

转载 作者:行者123 更新时间:2023-12-01 16:13:37 28 4
gpt4 key购买 nike

我在Catalina(10.15)的GM版本上使用Xcode 11。我正在为Mac Catalyst构建我的iOS应用。我的iOS应用具有iOS 11的部署目标。

我在 View Controller 中有一条简单的线,例如:

self.modalInPopover = YES;

在iOS中干净地编译。当我切换到“我的Mac”目的地时,我收到弃用警告:

'modalInPopover' is deprecated: first deprecated in macCatalyst 13.0



好的。我可以切换到iOS 13中添加的新方法:

if (@available(iOS 13.0, *)) {
self.modalInPresentation = YES;
} else {
self.modalInPopover = YES;
}

那应该可以解决它,但是在 modalInPopover块中使用 else时,我仍然会收到相同的弃用警告。

奇怪的是,相应的Swift代码没有给出任何警告。只有Objective-C代码继续发出警告。

if #available(iOS 13, *) {
self.isModalInPresentation = true
} else {
self.isModalInPopover = true
}

我什至尝试将 @available更新为:
if (@available(iOS 13.0, macCatalyst 13.0, *)) {

但这并没有改变任何东西。

以下灾难解决了该问题,但不需要这样做:

#if TARGET_OS_MACCATALYST
self.modalInPresentation = YES;
#else
if (@available(iOS 13.0, *)) {
self.modalInPresentation = YES;
} else {
self.modalInPopover = YES;
}
#endif

我是否缺少某些东西,或者这是Xcode的错误?我如何才能消除Objective-C中的弃用警告,而无需使用Swift中不需要的 #if TARGET_OS_MACCATALYST复制代码。

最佳答案

您可以使用它来检查何时在不同平台上运行它:

#if targetEnvironment(macCatalyst)
print("UIKit running on macOS")
#elseif os(watchOS)
print("Running on watchOS")
#else
print("Your regular code")
#endif

也应该删除警告。
可以在这里找到更多详细信息: https://www.hackingwithswift.com/example-code/catalyst/how-to-detect-your-ios-app-is-running-on-macos-catalyst

关于ios - Mac Catalyst中的弃用警告,但仅在Objective-C中,而不在Swift中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58262508/

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