【发布时间】:2012-11-02 08:02:14
【问题描述】:
我只是好奇,下面两个代码有什么区别吗?
NSString *aString = [NSString stringWithString:@"a string"];
NSString *aString = @"一个字符串";
我想知道当你使用后一种方式时到底发生了什么。
【问题讨论】:
标签: iphone objective-c ios cocoa
我只是好奇,下面两个代码有什么区别吗?
NSString *aString = [NSString stringWithString:@"a string"];
NSString *aString = @"一个字符串";
我想知道当你使用后一种方式时到底发生了什么。
【问题讨论】:
标签: iphone objective-c ios cocoa
两者都指向在编译时创建的文字字符串。
即使 stringWithString 建议它是自动释放的,文字字符串也永远不会被释放。
在这里查看我的相关帖子:
Difference between NSString literals
这样的对象是在编译时创建的,并且存在于你的整个 程序的执行。编译器使此类对象常量唯一 在每个模块的基础上,它们永远不会被释放,尽管你可以 像处理任何其他对象一样保留和释放它们。
【讨论】:
[NSString stringWithString:@"a string"] 应该返回“字符串”的自动发布副本。 Bryanmac,您能否发布一个描述您的答案的链接?
@a string" 传入,但指向一些文档的链接会有所帮助。