NSConstantString对象的唯一性

时间:2012-06-07 08:07:54

标签: objective-c nsstring

  

在源代码中创建字符串对象的最简单方法是使用Objective-C @“...”结构:

NSString *temp = @"/tmp/scratch";
     

请注意,以这种方式创建字符串常量时,应使用UTF-8字符。这样的对象是在编译时创建的,并且在整个程序的执行过程中都存在。编译器使这些对象常量在每个模块的基础上是唯一的,并且它们永远不会被释放,尽管您可以像执行任何其他对象一样保留和释放它们。您还可以像执行任何其他字符串一样将消息直接发送到字符串常量:

BOOL same = [@"comparison" isEqualToString:myString];

这是ObjC文档中来自Creating Strings的引用。

我在applicationA中测试了不同的@“”字符串,也是applicationA使用的libB。 使用string = @“...”模式初始化并具有相同内容的所有@“”都指向相同的内存地址。

因此,我不理解“每个模块”的含义,“每个模块”是什么意思?基于lib?应用基于?基于文件?

1 个答案:

答案 0 :(得分:0)

出于Mac OS X和iOS开发的目的,模块相当于单个.m / .mm / .c / .cpp文件。