Ви повинні оголосити свою постійну рядок наступним чином:
NSString * const kSomeConstantString = @""; // constant pointer
замість:
const NSString * kSomeConstantString = @""; // pointer to constant
// equivalent to
NSString const * kSomeConstantString = @"";
Перший - це постійний вказівник на NSStringоб'єкт, тоді як останній - вказівник на постійний NSStringоб'єкт.
Використання NSString * constперешкоди вам переназначити kSomeConstantString для вказівки на інший NSStringоб’єкт.
Метод isEqualToString:очікує аргумент типу NSString *. Якщо ви const NSString *передаєте вказівник на постійний рядок ( ), ви передаєте щось інше, ніж він очікує.
Крім того, NSStringоб'єкти вже незмінні, тому робити їх const NSStringбезглуздо.