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…
那样灵活),但你是对的。