iPhone开发 - 创建NSString的(iPhone Dev - NSString Creat

2019-07-31 04:06发布

我真的很困惑与NSString的。 当我应该做的像

NSString *aString = @"Hello";

的它应该是:

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

但随后其不同的,当你将值分配给一个NSString属性不是吗? 有人可以清除此为我?

谢谢!!

Answer 1:

一般来说,你首先应该做的,但他们大多是在功能上是相同的。 你可以把常量NSString的就像正常的NSString字符串对象,例如:

[@"Hello" length]

将返回5.您可以将它们分配到的属性,一切只是工作。 有一件事你可能会注意到的是,随着不断的NSString的你不必担心保留/释放。 这是因为他们实际上映射到应用程序只读数据部分,不具有分配的内存。 保留和释放调用对他们​​仍然工作,他们只是变得noops。



Answer 2:

NSString *aString = @"Hello";

将创建一个autoreleased的字符串。 也就是说,如果你不明确retain它,你以后的方法是在(有时这是完全罚款)将可能消失。 但是,如果你想抓住它过去的那个时候,你需要把它保留下来。

如果创建一个属性为字符串,像这样

@property (retain) NSString *aString;

然后分配是这样的:

self.aString = @"Hello";

然后你正确保留了字符串,它会坚持围绕。

在另一方面,使用alloc, init会创建一个字符串为您为1的保留计数,如果你不需要它过去那种方法,你应该release它。

****编辑:@“你好”是不是一个autoreleased字符串,正如其他人指出。 我的错。 ****



文章来源: iPhone Dev - NSString Creation