Objective c 目标C,关于释放物体的问题

Objective c 目标C,关于释放物体的问题,objective-c,Objective C,如果我做了类似的事情 address = [[NSString alloc] initWithData:addressData encoding:NSASCIIStringEncoding]; NSData *addressData = [NSData dataWithBytes:buf length:address_len]; 然后我知道,在我使用完[address release]之后,我需要像这样做。 因为“alloc”增加了“address”变量的引用计数,所以我需要 [addr

如果我做了类似的事情

address = [[NSString alloc] initWithData:addressData encoding:NSASCIIStringEncoding];
 NSData *addressData = [NSData dataWithBytes:buf length:address_len];
然后我知道,在我使用完[address release]之后,我需要像这样做。 因为“alloc”增加了“address”变量的引用计数,所以我需要

 [address release]
但我不确定我是否需要释放,如果我做了类似的事情

address = [[NSString alloc] initWithData:addressData encoding:NSASCIIStringEncoding];
 NSData *addressData = [NSData dataWithBytes:buf length:address_len];
我在这个语句中没有看到任何“alloc”。那么,在我完成这个之后,我还需要做[addressData release]吗


提前谢谢…

不。在这种情况下,您可以安全地假设内存是自动释放的


所有的解释都在

不,你没有。如果从中获取对象的方法是
alloc
,包含单词
copy
,或者如果已
retain
保存对象,则只需释放(或自动释放)对象。

在第二个示例中,无需进行释放。一般规则是,如果调用alloc、retain或copy,则您负责发布。

否,不需要在第二个语句中发布。如果
alloc、copy、new
,则应
释放对象


关于何时释放对象,有非常有用的信息。

不鼓励使用
new
(因为它不像
alloc
/
init…
那样灵活),但你是对的。