我只是很好奇,以下两个代码有什么区别吗?
NSString * aString = [NSString stringWithString:@“a string”];
NSString * aString = @“a string”;
我想知道当你采用后一种方式时到底发生了什么。
答案 0 :(得分:3)
两者都指向在编译时创建的文字字符串。
尽管stringWithString建议将其自动释放,但文字字符串永远不会被释放。
请在此处查看我的相关帖子:
Difference between NSString literals
来自apple docs @ https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/CreatingStrings.html
这样的对象是在编译时创建的,并且存在于整个文件中 程序的执行。编译器使这些对象常量唯一 在每个模块的基础上,尽管你可以,但它们永远不会被释放 保留并释放它们,就像你做任何其他对象一样。