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!
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, *)) {}
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
Pour désactiver l'avertissement, modifiez les "Autres indicateurs d'avertissement" de la cible en: