修改常数值

时间:2017-05-09 10:01:28

标签: ios objective-c pointers constants

我理解

的不同之处
NSMutableString const * myMutableString = [[NSMutableString alloc]initWithString:@"Bar"]

这是一个指向NSString的不可变指针。

然后我们有:

body

这是指向const NSMutableString的指针。 myMutableString的值不应该改变。

为什么可以呢?: [myMutableString追加:@“Foo”];

没有编译器错误,并且它有效。它允许我改变值。

在哪种情况下可以使用常量对象?

谢谢!

1 个答案:

答案 0 :(得分:2)

NSMutableString const * myMutableString = [[NSMutableString alloc]initWithString:@"Bar"]

为此您可以更改“myMutableString”的值,因为它指向静态位置,该位置的值可能不同但指向位置不能

所以,如果您遇到类似应用程序基本URL的情况,您必须为您的应用程序中的每个服务调用定义哪个相同,如下所示

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";

第二个好处是更改常量的值不会导致重建整个程序。