And*_*ill 13 const constants objective-c keyword compiler-warnings
定位的意义是什么?
const
Run Code Online (Sandbox Code Playgroud)
在Objective-C中声明变量时的关键字,例如:
extern const NSString * MY_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
与
extern NSString * const MY_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
在赋值中使用第一个版本会产生关于"指针目标类型的限定符"被丢弃的警告,所以我假设第二个版本确保指针地址保持不变.我真的很感激一个更确定的答案.提前谢谢了!
ezo*_*zod 14
在第一种情况下,您声明一个指向不可变const NSString对象的可变指针,而在第二种情况下,您声明一个指向可变NSString对象的不可变指针.
记住这个的一个简单方法是看看*它的位置; 它左边的所有内容都是"指针"类型,它右边的所有内容都描述了指针的属性.
小智 7
extern const NSString * MY_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
- 指针是可变的,但指针指向的数据是常量.
extern NSString * const MY_CONSTANT;
Run Code Online (Sandbox Code Playgroud)
- 指针常量,但指针指向的数据不是常量.
通常,const始终适用于之前的令牌const.在第二种情况下,const意味着指针是常量,而不是指向的东西.例外情况是const在第一个例子中出现在可以有意义地保持不变的任何事物之前.在这种情况下,它适用于第一种类型,在这种情况下NSString,它等同于extern NSString const * MY_CONSTANT
| 归档时间: |
|
| 查看次数: |
2670 次 |
| 最近记录: |