Vous devez déclarer votre constante chaîne de caractères comme suit:
NSString * const kSomeConstantString = @""; // constant pointer
au lieu de:
const NSString * kSomeConstantString = @""; // pointer to constant
// equivalent to
NSString const * kSomeConstantString = @"";
Le premier est un pointeur constant vers un NSString
de l'objet, tandis que le second est un pointeur vers une constante NSString
objet.
À l'aide d'un NSString * const
vous empêche de réaffectation kSomeConstantString à point à un autre NSString
objet.
La méthode isEqualToString:
attend un argument de type NSString *
. Si vous passez un pointeur vers une chaîne constante (const NSString *
), vous êtes de passage à quelque chose de différent de ce qu'il attend.
En outre, NSString
des objets sont déjà immuable, afin de faire leur const NSString
est vide de sens.