NSString stringWithString VS @“string”

时间:2012-03-06 07:01:10

标签: iphone objective-c ios cocoa

我只是很好奇,以下两个代码有什么区别吗?

NSString * aString = [NSString stringWithString:@“a string”];

NSString * aString = @“a string”;

我想知道当你采用后一种方式时到底发生了什么。

1 个答案:

答案 0 :(得分:3)

两者都指向在编译时创建的文字字符串。

尽管stringWithString建议将其自动释放,但文字字符串永远不会被释放。

请在此处查看我的相关帖子:

Difference between NSString literals

来自apple docs @ https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html

  

这样的对象是在编译时创建的,并且存在于整个文件中   程序的执行。编译器使这些对象常量唯一   在每个模块的基础上,尽管你可以,但它们永远不会被释放   保留并释放它们,就像你做任何其他对象一样。