This question already has answers here:
What does the const specifier do, before a pointer to object?
(3个答案)
3年前关闭。
我了解不同之处
这是指向NSString的不变指针。
然后我们有:
这是指向const NSMutableString的指针。 myMutableString的值应该不能更改。
为什么可以这样做?:
[myMutableString append:@“Foo”];
没有编译器错误,并且可以正常工作。它允许我更改值。
那么在哪种情况下可以使用常量对象?
谢谢!
为此,您可以更改“myMutableString”的值,因为它指向静态位置,该位置的值可能有所不同,但指向位置不能
因此,如果您遇到某种情况(例如应用程序基本网址),则必须定义应用程序中的每个服务调用都相同的方法,如下所示:
1)最简单的方法:
2)更好的方法:
第二个好处是更改常数的值不会导致整个程序的重建。
(3个答案)
3年前关闭。
我了解不同之处
NSString * const myString = @"Bar"
这是指向NSString的不变指针。
然后我们有:
NSMutableString const * myMutableString = [[NSMutableString alloc]initWithString:@"Bar"]
这是指向const NSMutableString的指针。 myMutableString的值应该不能更改。
为什么可以这样做?:
[myMutableString append:@“Foo”];
没有编译器错误,并且可以正常工作。它允许我更改值。
那么在哪种情况下可以使用常量对象?
谢谢!
最佳答案
NSMutableString const * myMutableString = [[NSMutableString alloc]initWithString:@"Bar"]
为此,您可以更改“myMutableString”的值,因为它指向静态位置,该位置的值可能有所不同,但指向位置不能
因此,如果您遇到某种情况(例如应用程序基本网址),则必须定义应用程序中的每个服务调用都相同的方法,如下所示:
1)最简单的方法:
// Prefs.h
#define APP_BASE_URL @"app_base_url"
2)更好的方法:
// Prefs.h
extern NSString * const APP_BASE_URL;
// Prefs.m
NSString * const APP_BASE_URL = @"app_base_url";
第二个好处是更改常数的值不会导致整个程序的重建。
关于ios - 修改常数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43866806/
10-12 16:08