用反射修改字符串

时间:2015-09-17 13:08:32

标签: objective-c string swift reflection

我正在阅读this个问题/答案,这基本上表明了Java和字符串中的一个有趣的行为,我脑子里出现了两个问题:

  1. Objective-C / Swift String的行为是否相同?我的意思是,如果我有两个变量存储相同的文字"someString",在内部,它们会引用一个"someString"对象吗?我在文档中没有找到任何相关内容。
  2. 如果上一个问题的答案是肯定的,那么是否可以像Java一样改变相同的字符串文字?

1 个答案:

答案 0 :(得分:2)

  1. 由于编译单元,并非所有NSString文字(@"string literal")共享相同的存储空间。
  2. NSString文字在程序代码中无法更改,它们被编译为只读段。
  3. NSString变量,即在运行时创建的变量,仅由赋值共享。
  4. NSString个实例是不可变的,创建后无法更改。
  5. 可以修改
  6. NSMutableString个实例,并且指向此类实例的所有变量都指向相同的更改。
  7. Swift略有不同,正如@Grimxn指出的那样,Swift String不是一个类,不变性由声明语法决定:letvar