iPhone Dev - NSString创建

时间:2009-07-31 02:01:18

标签: iphone cocoa-touch string nsstring creation

我真的很困惑NSStrings。我应该什么时候做呢

NSString *aString = @"Hello";

应该是:

NSString *aString = [[NSString alloc] initWithString:@"Hello"];

但是当你为NSString属性赋值时,它的不同之处不是吗? 有人可以帮我解决这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

一般来说,你应该先做第一次,但它们在功能上大多是相同的。您可以像处理普通的NSString字符串对象一样处理常量NSStrings,例如:

[@"Hello" length]

将返回5.您可以将它们分配给属性,一切正常。您可能注意到的一件事是,使用常量NSStrings,您不必担心保留/释放。这是因为它们实际上映射到应用程序只读数据部分,并且没有分配的内存。保留和释放对他们的电话仍然有效,他们只是变成了noops。

答案 1 :(得分:0)

NSString *aString = @"Hello";

将创建一个autoreleased字符串。也就是说,如果你没有明确地retain它,它可能会在你的方法结束后消失(有时这完全没问题)。但如果你想在那段时间之后坚持下去,你就需要保留它。

如果您为此字符串创建属性,则

@property (retain) NSString *aString;

然后分配如下:

self.aString = @"Hello";

然后你已经正确地保留了字符串,它会一直存在。

另一方面,使用alloc, init将为您创建一个保留计数为1的字符串,如果您不需要它通过该方法,则应该release它。

****编辑:@“Hello”不是自动释放的字符串,正如其他人指出的那样。我的错。 ****