我真的很困惑与NSString的。 当我应该做的像
NSString *aString = @"Hello";
的它应该是:
NSString *aString = [[NSString alloc] initWithString:@"Hello"];
但随后其不同的,当你将值分配给一个NSString属性不是吗? 有人可以清除此为我?
谢谢!!
我真的很困惑与NSString的。 当我应该做的像
NSString *aString = @"Hello";
的它应该是:
NSString *aString = [[NSString alloc] initWithString:@"Hello"];
但随后其不同的,当你将值分配给一个NSString属性不是吗? 有人可以清除此为我?
谢谢!!
一般来说,你首先应该做的,但他们大多是在功能上是相同的。 你可以把常量NSString的就像正常的NSString字符串对象,例如:
[@"Hello" length]
将返回5.您可以将它们分配到的属性,一切只是工作。 有一件事你可能会注意到的是,随着不断的NSString的你不必担心保留/释放。 这是因为他们实际上映射到应用程序只读数据部分,不具有分配的内存。 保留和释放调用对他们仍然工作,他们只是变得noops。
NSString *aString = @"Hello";
将创建一个autoreleased
的字符串。 也就是说,如果你不明确retain
它,你以后的方法是在(有时这是完全罚款)将可能消失。 但是,如果你想抓住它过去的那个时候,你需要把它保留下来。
如果创建一个属性为字符串,像这样
@property (retain) NSString *aString;
然后分配是这样的:
self.aString = @"Hello";
然后你正确保留了字符串,它会坚持围绕。
在另一方面,使用alloc, init
会创建一个字符串为您为1的保留计数,如果你不需要它过去那种方法,你应该release
它。
****编辑:@“你好”是不是一个autoreleased字符串,正如其他人指出。 我的错。 ****