debugTestLabel.text = [[NSString alloc] initWithFormat:@"%g, %g", @"Testing String", @"I am another"];
我分配字符串并立即分配给文本,但我不知道该字符串是否可以自动释放。
答案 0 :(得分:4)
不,它不会自动释放,你必须释放它。但是,如果您使用[NSString stringWithFormat],它将自动释放。
答案 1 :(得分:1)
jupp,将autorelease
添加到结尾
答案 2 :(得分:1)
是的,alloc == release(一个容易记住的规则)
答案 3 :(得分:1)
如果您阅读documentation,您会发现text
属性已被复制 - 您无需保留NSString
个实例。
所以答案是肯定的:你可以(自动)发布NSString
实例。
答案 4 :(得分:0)
实际上,这取决于。
[[NSString alloc] initWithFormat:...];
这将构造一个保留计数为+1的字符串。如果text
属性为@property(retain)
或@property(copy)
,则debugTestLabel
将采用其所有权,因此您应该-release
(或-autorelease
)然后。
但是,如果text
属性为@property(assign)
,则debugTestLabel
不会声明所有权,您必须确保文本的有效期超过标签使用的时间。< / p>
(如果标签是UILabel
子类,那么它就是第一种情况。)
答案 5 :(得分:0)
规则是,如果方法以init
开头,则必须release
(或autorelease
它。否则它是一个自动释放的对象(例如stringWithFormat:
)。因此,在这种情况下,您应该将代码更改为:
debugTestLabel.text = [[[NSString alloc] initWithFormat:@"%g, %g", @"Testing String", @"I am another"] autorelease];
或更多标准,
debugTestLabel.text = [NSString stringWithFormat:@"%g, %g", @"Testing String", @"I am another"];
答案 6 :(得分:0)
您应该在使用字符串后立即释放字符串。