下面是Objective-C的代码:
if (@available(iOS 13.0, tvOS 13.0, *)) {
indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleLarge;
} else {
indicator.indicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
}
但这会产生一个错误。
'UIActivityIndicatorViewStyleWhiteLarge' is unavailable: not available on xrOS
我想我需要第一个条件来运行,这样它就不会试图访问UIActivityIndicatorViewStyleWhiteLarge
。
但是当我将行改为if (@available(iOS 13.0, tvOS 13.0, visionOS 1.0, *))
时。我得到以下错误:
Unrecognized platform name visionOS
我还尝试将其更改为xrOS 1.0
(因为我听说一些内部用法将其作为xrOS使用了一段时间。虽然我没有得到第二个编译器错误,但它仍然说它不可用。
有什么解决办法吗?
1条答案
按热度按时间5w9g7ksd1#
不幸的是,Objective-C在
@available
方面很糟糕。如果你在Swift中编写相同的逻辑,你不会得到弃用警告。我不知道为什么Objective-C在这方面做得不好。正如您所看到的,将
xrOS 1.0
添加到@available
并没有消除弃用警告,尽管在运行时,由于@available
,else
将不会被执行。因此,当它在运行时工作时,编译器不必要地抱怨它不应该抱怨的情况。根据我自己的经验,唯一的解决方案是使用编译器指令。虽然我的经验是使用Mac Catalyst而不是visionOS,但问题是一样的。
您需要编写类似于以下内容的丑陋代码:
最糟糕的部分是代码重复。你唯一的其他选择是转换到Swift或接受弃用警告。