Sie sollten Ihre konstante Zeichenfolge wie folgt deklarieren:
NSString * const kSomeConstantString = @""; // constant pointer
anstelle von:
const NSString * kSomeConstantString = @""; // pointer to constant
// equivalent to
NSString const * kSomeConstantString = @"";
Ersteres ist ein konstanter Zeiger auf eine NSString
Objekt, während letzteres ein Zeiger auf eine Konstante ist NSString
Objekt.
Mit einer NSString * const
verhindert, dass Sie kSomeConstantString neu zuweisen können, um auf einen anderen NSString
Objekt.
Die Methode isEqualToString:
erwartet ein Argument vom Typ NSString *
. Wenn Sie einen Zeiger auf eine konstante Zeichenkette übergeben ( const NSString *
), übergeben Sie etwas anderes, als es erwartet.
Außerdem, NSString
Objekte sind bereits unveränderlich, so dass sie const NSString
ist bedeutungslos.