我如何摆脱 IOS 版本 "is partial: introduced in IOS X" Xcode 中的警告

How do i get rid of IOS version "is partial: introduced in IOS X" warnings in Xcode

所以,我有一些地方只有在特定版本之后才可用。一个例子是我在我的应用程序中引入的一些新的 NFC 东西:

@property(nonatomic, retain) NFCNDEFReaderSession *nfcSession;

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

if ([NFCNDEFReaderSession class]){

我的应用程序工作正常,但我收到 xcode 警告说

NFCNDEFReaderSession is partial: introduced in iOS 11.0

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

不胜感激!

您可以通过在代码周围添加 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

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

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

}

方法调用可以包含在以下内容中以消除新的 API 警告

if (@available(iOS 11.0, *)) {}

要消除警告,请将目标的 "Other warning flags" 更改为:

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

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