我有一个字符串,我想称之为:

[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是没有意义的.

Objective-c相关问答推荐

使用 NSMutableString 附加到文件的末尾

在哪里以及如何 __bridge

Objective-C:在字符串中查找数字

有没有办法清除 UIImage 类使用的缓存?

如何将 UInt32 设置为最大值

无法编译连接:错误是什么意思?

NSUInteger 不应该在格式字符串中使用吗?

以编程方式创建 UITableView

从昨天开始无法将存档上传到应用store

我应该使用 NSUserDefaults 还是 plist 来存储数据?

UICollectionView 单元格 Select 和单元格重用

带有 NSBlockOperation 和队列的 NSURLSession

在 switch 语句中使用 NSString

交换 NSMutableArray 中的元素

Objective-C 异常

每个 ivar 都必须是一个属性吗?

如何从 UIColor 对象中获取红绿蓝 (RGB) 和 alpha?

如何删除 UIToolBar 上的顶部边框

如何阻止 NSNotification 中的观察者调用两次?

Objective-C in,out,inout,byref,byval, .. 等等.这些是什么?