Ви повинні оголосити свою постійну рядок наступним чином:
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
безглуздо.