You should declare your constant string as follows:
NSString * const kSomeConstantString = @""; // constant pointer
instead of:
const NSString * kSomeConstantString = @""; // pointer to constant
// equivalent to
NSString const * kSomeConstantString = @"";
The former is a constant pointer to an NSString
object, while the latter is a pointer to a constant NSString
object.
Using a NSString * const
prevents you from reassigning kSomeConstantString to point to a different NSString
object.
The method isEqualToString:
expects an argument of type NSString *
. If you pass a pointer to a constant string (const NSString *
), you are passing something different than it expects.
Besides, NSString
objects are already immutable, so making them const NSString
is meaningless.