![]() |
1
6
显然,至少在一个编译单元中,正在进行字符串统一。我建议你进行一次简短的旅行
您可以使用
你看
如果您查看非内置的实现
另见对问题的回答, "What's the difference between a string constant and a string literal?" |
![]() |
2
4
nsstring被定义为一个不可变的类型,因此每当编译器通过组合相同的字符串来优化事物时,它就应该这样做。正如您的代码所演示的,gcc显然会针对简单的情况执行这种优化。 |
![]() |
3
2
对于Ctring和Actring,C、C++和Objic C编译器可以在一个以上的位置声明一个编译时字符串对象。 |
![]() |
4
0
也许是简单的写上拷贝优化?因为所有3个字符串都指向同一个“字符集”,所以在修改其中一个字符串之前,不需要创建单独的副本。 可能字符存储在内存的静态部分(带代码),nsstrings*指向内存的该部分。一旦尝试修改其中一个字符串,它将在其他地方创建新的字符串(堆),然后引用该内存。 |
![]() |
Noah H · 如何通过终端或Swift禁用三指轻拍手势? 7 年前 |
![]() |
Dmitry Serov · 货币数字格式-数字为整数时省略分数部分 7 年前 |
![]() |
Duny · ObjC日期始终返回2017年12月25日 7 年前 |
![]() |
Jan Kaiser · NSButton不调用其操作 7 年前 |