用反射修改字符串

Modify strings with reflection

我正在阅读 question/answers,它基本上显示了 Java 和字符串中的一个有趣行为,我想到了两个问题:

  1. Objective-C/Swift String 的行为是否相同?我的意思是,如果我有两个存储相同文字 "someString" 的变量,它们在内部会引用一个 "someString" 对象吗?我在文档中没有找到任何关于它的信息。
  2. 如果我上一个问题的答案是肯定的,那么是否可以像 Java 中那样更改相同的字符串文字?
  1. 由于编译单元的原因,并非所有 NSString 文字 (@"string literal") 都共享相同的存储空间。
  2. NSString 文字在程序代码中不能更改,它们被编译成只读段。
  3. NSString 变量,即在运行时创建的变量,仅通过赋值共享。
  4. NSString 实例是不可变的,创建后无法更改。
  5. NSMutableString 个实例可以修改,所有指向此类实例的变量都指向相同的更改。

Swift 略有不同,正如@Grimxn 指出的那样,Swift String 不是 class 并且不变性由声明语法确定:letvar.