如果我做的话
address = [[NSString alloc] initWithData:addressData encoding:NSASCIIStringEncoding];
然后我知道在完成使用之后我需要做[地址发布]。 因为“alloc”增加了“address”变量的引用计数,所以我需要做
[address release]
但是我不确定如果我做了像
这样的事情我需要释放 NSData *addressData = [NSData dataWithBytes:buf length:address_len];
我在这个声明中没有看到任何“alloc”。在完成这个之后我还需要做[addressData release]吗?
提前致谢...
答案 0 :(得分:1)
不。在这种情况下,您可以安全地假设内存是自动释放的。
中解释答案 1 :(得分:1)
不,你没有。如果您获取对象的方法是alloc
,包含单词copy
,或者您retain
编辑了对象,则只需要释放(或自动释放)对象。 / p>
答案 2 :(得分:0)
您不需要在第二个示例中执行此版本。一般规则是,如果您调用alloc,retain或copy,则负责发布。
答案 3 :(得分:0)
不,没有必要在你的第二个声明中发布。如果您alloc, copy, new
,则应release
对象。
Objective C Memory Management for Lazy People提供了有关何时release
个对象的非常有用的信息。