我如何摆脱 Xcode 中的 IOS 版本“部分:在 IOS X 中引入”警告

Posted

技术标签:

【中文标题】我如何摆脱 Xcode 中的 IOS 版本“部分:在 IOS X 中引入”警告【英文标题】:How do i get rid of IOS version "is partial: introduced in IOS X" warnings in Xcode 【发布时间】:2017-09-07 07:07:56 【问题描述】:

所以,我有一些地方只有在某个版本之后才能使用。一个例子是我在我的应用中引入的一些新的 NFC 功能:

@property(nonatomic, retain) NFCNDEFReaderSession *nfcSession;

我在方法中也有它,即使我检查类可用性,我也会得到它,例如:

if ([NFCNDEFReaderSession class])

我的应用运行良好,但我收到一条 xcode 警告

NFCNDEFReaderSession is partial: introduced in ios 11.0

我环顾四周,但没有找到一种方法告诉编译器它没问题并消除警告。

非常感谢您的指点!

【问题讨论】:

有用***.com/questions/47443783/… 【参考方案1】:

将 NS_AVAILABLE_IOS(11.0) 添加到方法名称的末尾。例如:

- (BOOL)tableView:(UITableView *)tableView canHandleDropSession:(id<UIDropSession>)session NS_AVAILABLE_IOS(11.0) 


可以将方法调用包装在以下内容中以使新 API 警告静音

if (@available(iOS 11.0, *)) 

【讨论】:

谢谢,这很成功!不知何故忘记了这个:)【参考方案2】:

您可以通过在代码周围添加 Clang “pragmas” 来消除部分代码中的特定警告。在这种情况下:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability"

// your code

#pragma clang diagnostic pop

文档:https://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas

【讨论】:

你拯救了我的一天!【参考方案3】:

要使警告静音,请将目标的“其他警告标志”更改为:

-Wno-partial-availability -Wno-unguarded-availability

【讨论】:

【参考方案4】:

您也可以在项目设置中关闭Unguarded availability。如果您使用的是 Cocoapods,它现在默认在 Pods 项目中启用。

【讨论】:

以上是关于我如何摆脱 Xcode 中的 IOS 版本“部分:在 IOS X 中引入”警告的主要内容,如果未能解决你的问题,请参考以下文章

从 Xcode 5 支持旧版本的 iOS

iOS 7 及更高版本 (8.4) 中不推荐使用 SegmentedControlStyle | Xcode 6.4

Xcode:如何摆脱这个 AdMob 日志消息?

摆脱图像资产目录中不支持的版本

rails 部分模板中的可选局部变量:我如何摆脱(定义的?foo)混乱?

Mountain Lion 上 xCode 4.5.1 中的 iOS 4 和 iOS 5 SDK