“Envoi de const NSSsortingng * ‘au ​​paramètre de type’ NSSsortingng * ‘élimination des qualificatifs’ avertissement

J’ai des constantes NSSsortingng, que je veux appeler comme:

[newSsortingng isEqualToSsortingng:CONSTANT_STRING]; 

Un mauvais code ici?

J’ai eu cet avertissement:

envoi de ‘const NSSsortingng *’ au paramètre de type ‘NSSsortingng *’ élimine les qualificatifs

Comment devraient-ils être déclarés?

    Vous devez déclarer votre chaîne constante comme suit:

     NSSsortingng * const kSomeConstantSsortingng = @""; // constant pointer 

    au lieu de:

     const NSSsortingng * kSomeConstantSsortingng = @""; // pointer to constant // equivalent to NSSsortingng const * kSomeConstantSsortingng = @""; 

    Le premier est un pointeur constant sur un object NSSsortingng , tandis que le second est un pointeur sur un object NSSsortingng constant.

    L’utilisation d’un NSSsortingng * const vous empêche de réaffecter kSomeConstantSsortingng à un object NSSsortingng différent.

    La méthode isEqualToSsortingng: attend un argument de type NSSsortingng * . Si vous passez un pointeur sur une chaîne constante ( const NSSsortingng * ), vous transmettez un résultat différent de celui attendu.

    De plus, les objects NSSsortingng sont déjà immuables, donc les rendre const NSSsortingng est insignifiant.

    juste pour mettre tout sur un endroit qui se trouve sur divers post sur stackoverflow et fonctionne pour moi, #define est mauvais parce que vous ne pouvez pas bénéficier de types de variables, essentiellement le compilateur remplace toutes les occurrences lors de la compilation

     // Constants.h #import  @interface Constants : NSObject extern NSSsortingng *APP_STATE_LOGGED_IN; extern NSSsortingng *APP_STATE_LOGGED_OUT; @end // Constants.m #import  #import "Constants.h" @implementation Constants NSSsortingng *APP_STATE_LOGGED_IN = @"APP_STATE_LOGGED_IN"; NSSsortingng *APP_STATE_LOGGED_OUT = @"APP_STATE_LOGGED_OUT"; @end 

    épargnez quelques minutes pour lire ceci. Une bonne lecture des pointeurs sur les constantes et vice-versa.

    http://c-faq.com/decl/spiral.anderson.html