gpt4 book ai didi

objective-c - 何时使用静态字符串与 #define

转载 作者:IT老高 更新时间:2023-10-28 11:38:29 33 4
gpt4 key购买 nike

我有点困惑什么时候最好使用:

static NSString *AppQuitGracefullyKey = @"AppQuitGracefully";

而不是

#define AppQuitGracefullyKey    @"AppQuitGracefully"

我已经看到类似 C 或 C++ 的问题,我认为这里的不同之处在于,这是专门针对 Objective C,利用对象,在 iPhone 等设备上,可能存在堆栈、代码空间或我还没有掌握的内存问题。

一种用法是:

appQuitGracefully =  [[NSUserDefaults standardUserDefaults] integerForKey: AppQuitGracefullyKey];

还是只是风格问题?

谢谢。

最佳答案

如果你使用静态,编译器会在你的二进制文件中嵌入一个字符串的副本,并且只是传递指向该字符串的指针,从而生成更紧凑的二进制文件。如果您使用#define,则每次使用时都会有一个单独的字符串副本存储在源中。常量字符串合并将处理许多重复,但你无缘无故地让链接器工作得更加努力。

关于objective-c - 何时使用静态字符串与 #define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2092005/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com