web-dev-qa-db-fra.com

Comment puis-je me débarrasser de IOS version "est partielle: introduite dans IOS X "avertissements dans Xcode

Donc, j'ai des endroits où les choses ne sont disponibles qu'après une certaine version. Voici un exemple NFC que j'ai introduit dans mon application:

@property(nonatomic, retain) NFCNDEFReaderSession *nfcSession;

Je l'ai aussi dans les méthodes, où je l'obtiens même si je vérifie la disponibilité de la classe, par exemple:

if ([NFCNDEFReaderSession class]){

mon application fonctionne bien, mais je reçois un avertissement xcode 

NFCNDEFReaderSession is partial: introduced in iOS 11.0

J'ai regardé autour de moi mais je n'ai pas trouvé le moyen de dire au compilateur que tout va bien et de se débarrasser de l'avertissement.

Pointeurs très appréciés!

19
Mathias

Ajoutez NS_AVAILABLE_IOS (11.0) à la fin du nom de la méthode. Par exemple:

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

}

Les appels de méthode peuvent être encapsulés de la manière suivante pour désactiver le nouvel avertissement d'API.

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

Vous pouvez faire taire des avertissements spécifiques sur des parties de votre code en ajoutant des «pragmas» Clang autour de celui-ci. Dans ce cas:

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

// your code

#pragma clang diagnostic pop

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

8
Vincent Tourraine

Pour désactiver l'avertissement, modifiez les "Autres indicateurs d'avertissement" de la cible en: 

  • -Non-partielle-disponibilité
  • -Wno-nonguarded-availability
1
Joel Teply

Vous pouvez également désactiver Unguarded availability dans les paramètres du projet. Si vous utilisez Cocoapods, il est maintenant activé par défaut dans le projet Pods.

 enter image description here

0
David Gish