我是否需要释放使用@“...”生成的NSString?

时间:2009-03-26 23:39:15

标签: objective-c

如果我使用下面的代码制作NSString,我是否需要发布someString?

NSString *someString = @"somestring";

6 个答案:

答案 0 :(得分:20)

不,它是一个编译时常量字符串对象,因此不需要释放。它是char * c =“hello world”的道德等价物 - 其中字符串hello world在全局数据中,并且您将此数据的地址分配给指针c。

答案 1 :(得分:15)

如果您通过包含allocretaincopy的方法调用创建了对象,或者以new(NARC =“narc”)开头,那么您负责releasing对象。如果不是这种情况,那么您可以忽略该对象。

所以在字符串的情况下:

NSString * myString = @"This is a string";

我没有看到对NARC方法的调用,因此您不负责释放它。这真的很简单。

答案 2 :(得分:2)

不,因为它是编译时常量字符串,所以您不需要释放它。实际上,这样做可能会导致运行时错误。

答案 3 :(得分:1)

我检查this caseNSString *someThing = @"someThing";不同 他们应该因为

而释放urlString
[[NSString alloc] initWithFormat:@"%@%@", baseURLString, queryTerm];

你使用alloc / init的任何地方你都不会释放它。

答案 4 :(得分:0)

因此,请在以下link中查看Apple在“使用POST请求插入数据”部分中所执行的操作:

我看到[urlString release];,为什么?

答案 5 :(得分:0)

如果它是编译时常量字符串,则不需要保留它。这是对的吗?