ios - 修改常量值

标签 ios objective-c pointers constants

我了解它们之间的差异

NSString * const myString = @"Bar"

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

然后我们有:

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

这是一个指向 const NSMutableString 的指针。 myMutableString 的值不应更改。

为什么可以这样做?: [myMutableString 附加:@"Foo"];

没有编译器错误,并且可以工作。它允许我更改值。

什么情况下可以使用常量对象?

谢谢!

最佳答案

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

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

因此,如果您遇到某种情况,例如应用程序基本 url,则必须定义应用程序中的每个服务调用都相同的 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";

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

关于ios - 修改常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43866806/

相关文章:

ios - 核心数据获取会返回什么样的错误?

java - Objective-C + Cocoa 相当于 Java + Swing 的事件调度线程是什么?

iphone - 处理何时回调已释放的委托(delegate)?

c++ - 如何求和和减去 char* 数字?

c++ - 引用和指针都存储地址?

C++ 如何获得返回引用并将引用保存为函数中的局部变量?

javascript - 如何从React-Native向Native发送参数

ios - iAds 没有显示在我的 iPhone 应用程序中

ios - CoreGraphics - 用笔划剪切渐变

ios - 简单的委托(delegate)方法不起作用