我有一个字符串,我想称之为:
[newString isEqualToString:CONSTANT_STRING];
这里有错误代码吗?
我收到这个警告:
将"const NSString*"发送到"NSString*"类型的参数会丢弃限定符
这些应该如何申报?
我有一个字符串,我想称之为:
[newString isEqualToString:CONSTANT_STRING];
这里有错误代码吗?
我收到这个警告:
将"const NSString*"发送到"NSString*"类型的参数会丢弃限定符
这些应该如何申报?
您应该声明常量字符串,如下所示:
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
是没有意义的.