web-dev-qa-db-ja.com

XcodeでIOS versionが部分的である:IOS X "の警告で導入された

だから、私は物事が特定のバージョンの後にのみ利用できるいくつかの場所があります。一例は、いくつかの新しいNFC私がアプリで導入したものです:

@property(nonatomic, retain) NFCNDEFReaderSession *nfcSession;

また、メソッドにもあります。たとえば、クラスの可用性を確認したとしても、次のようになります。

if ([NFCNDEFReaderSession class]){

私のアプリは正常に動作しますが、xcode警告が表示されます

NFCNDEFReaderSession is partial: introduced in iOS 11.0

私は見回しましたが、コンパイラに問題がないことを伝えて警告を取り除く方法を見つけていません。

ポインタは大歓迎です!

19
Mathias

メソッド名の最後にNS_AVAILABLE_IOS(11.0)を追加します。例えば:

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

}

メソッドの呼び出しを次のようにラップして、新しいAPI警告を抑制できます。

if (@available(iOS 11.0, *)) {}
30
W Dyson

コードの一部にClangの「プラグマ」を追加することで、コードの特定の警告を消すことができます。この場合:

#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

8

警告を止めるには、ターゲットの「その他の警告フラグ」を次のいずれかに変更します。

  • -一部利用不可
  • -無防備な可用性
1
Joel Teply

オフにすることもできますUnguarded availabilityプロジェクト設定で。 Cocoapodsを使用している場合は、Podsプロジェクトでデフォルトでオンになっています。

enter image description here

0
David Gish