如果我使用下面的代码制作NSString,我是否需要发布someString?
NSString *someString = @"somestring";
答案 0 :(得分:20)
不,它是一个编译时常量字符串对象,因此不需要释放。它是char * c =“hello world”的道德等价物 - 其中字符串hello world在全局数据中,并且您将此数据的地址分配给指针c。
答案 1 :(得分:15)
如果您通过包含alloc
,retain
或copy
的方法调用创建了对象,或者以new
(NARC =“narc”)开头,那么您负责releasing
对象。如果不是这种情况,那么您可以忽略该对象。
所以在字符串的情况下:
NSString * myString = @"This is a string";
我没有看到对NARC方法的调用,因此您不负责释放它。这真的很简单。
答案 2 :(得分:2)
不,因为它是编译时常量字符串,所以您不需要释放它。实际上,这样做可能会导致运行时错误。
答案 3 :(得分:1)
我检查this case与NSString *someThing = @"someThing";
不同
他们应该因为
[[NSString alloc] initWithFormat:@"%@%@", baseURLString, queryTerm];
你使用alloc / init的任何地方你都不会释放它。
答案 4 :(得分:0)
因此,请在以下link中查看Apple在“使用POST请求插入数据”部分中所执行的操作:
我看到[urlString release];
,为什么?
答案 5 :(得分:0)
如果它是编译时常量字符串,则不需要保留它。这是对的吗?