Swift poor man's replacement for __iPhone_OS_VERSION_MAX_ALLOWED:如何检查我是否正在编译Xcode 15 beta的代码?

c2e8gylq  于 2023-08-07  发布在  Swift
关注(0)|答案(1)|浏览(116)

如何检查我是否正在编译Xcode 15 beta的代码?是否有一个快速的版本检查,我可以做,以确保

override func viewIsAppearing(_ animated: Bool) {
}

字符串
在Xcode 14.3.1的发布版本上检查ios版本是无用的:

的数据

7dl7o3gd

7dl7o3gd1#

由于viewIsAppearing是从Xcode 15开始公开的,但在iOS 13.0之后被标记为可用,因此您需要进行编译时检查,以确定是否应该包含代码,这取决于您是使用Xcode 14还是Xcode 15构建项目。
在Objective-C代码中,你可以用途:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 170000
- (void)viewIsAppearing:(BOOL)animated {
    [super viewIsAppearing:animated];
}
#endif

字符串
这将验证Base SDK是否为iOS 17或更高版本。但不幸的是,这不适用于Swift代码。
一个Swift解决方案是使用#if swift(>=X)编译器指令,其中“X”是Xcode 15使用的Swift版本。

#if swift(>=5.9)
    override func viewIsDisplaying(_ animated: Bool) {
        super.viewIsDisplaying(animated)
    }
#endif


Xcode 14.3使用Swift 5.8版本。Xcode 15.0(Beta)使用的是5.9。
如果您的应用的部署目标为iOS 12或更早版本,则还需要添加@available(iOS 13.0, *)行。

#if swift(>=5.9) // Only include this code in Xcode 15 or later
    @available(iOS 13.0, *) // Only apply this for iOS 13.0 or later
    override func viewIsDisplaying(_ animated: Bool) {
        super.viewIsDisplaying(animated)
    }
#endif

相关问题