Xcode 未使用正确的 ios SDK 版本编译

Posted

技术标签:

【中文标题】Xcode 未使用正确的 ios SDK 版本编译【英文标题】:Xcode not compiling with the correct ios SDK version 【发布时间】:2021-10-26 08:06:00 【问题描述】:

我有一个模拟蓝牙设备的本地 pod。里面有这么一行……

CBATTRequest *request = [CBATTRequest new];

自从升级 xcode 后,构建错误提示 'new' is unavailable。点击确认,在ios 14.5 SDK中,这个方法(实际上是init)确实被标记为“不可用”

/*!
 *  @class CBATTRequest
 *
 *  @discussion Represents a read or write request from a central.
 *
 */
NS_CLASS_AVAILABLE(10_9, 6_0)
CB_EXTERN_CLASS @interface CBATTRequest : NSObject

- (instancetype)init NS_UNAVAILABLE;

...不过,我的模拟器设置为 ios 12.4,而 pod 部署目标设置为 12.0。

如前所述,这是在我升级 xcode 之前编译的。 pod 开发小组表示它适用于 ios

那么为什么它现在是针对 14.5 而不是 12.x 编译的呢?如何让它针对 12.x 进行编译?

【问题讨论】:

SDK 由 Xcode 版本设置,而不是设备版本或应用目标。您需要降级您的 Xcode 或查看是否可以从以前的版本中选择 SDK ***.com/questions/54857416/… 【参考方案1】:

Xcode 12.5 init NS_UNAVAILABLE 中自动使new 不可用。 我不知道它是如何与实际不可用的初始化程序一起正常工作的,但现在你必须找到正确的方法来检索对有效 CBATTRequest 对象的引用

【讨论】:

是的,我明白这一切。我的问题是如何针对 在 xcode 12.5 中没有办法使用早期的 ios sdks 吗? @HariHonor 问题出在编译器上,你可以把命令行工具切换到以前的版本吗? 不需要下载xcode 12.4就可以切换吗?

以上是关于Xcode 未使用正确的 ios SDK 版本编译的主要内容,如果未能解决你的问题,请参考以下文章

iOS8 Xcode 6 Cordova 状态栏未正确隐藏

如何更改 Xcode sdk 编译版本

Xcode的多个副本-针对iOS的较早版本测试代码

如何在现有 iOS 应用中更新 AdMob

XCode 和 Facebook IOS SDK - 说明不正确

我还能将 iOS 3.2 SDK 编译的应用程序上传到 iTunesConnect