我如何摆脱 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 中引入”警告的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 及更高版本 (8.4) 中不推荐使用 SegmentedControlStyle | Xcode 6.4