目标C,关于释放对象的问题

时间:2011-02-17 10:36:48

标签: objective-c

如果我做的话

address = [[NSString alloc] initWithData:addressData encoding:NSASCIIStringEncoding];

然后我知道在完成使用之后我需要做[地址发布]。 因为“alloc”增加了“address”变量的引用计数,所以我需要做

 [address release]

但是我不确定如果我做了像

这样的事情我需要释放
 NSData *addressData = [NSData dataWithBytes:buf length:address_len];

我在这个声明中没有看到任何“alloc”。在完成这个之后我还需要做[addressData release]吗?

提前致谢...

4 个答案:

答案 0 :(得分:1)

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

所有内容都在Memory Management Ownership Policy

中解释

答案 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个对象的非常有用的信息。