1

使用 Objective-C 时是否有任何经验法则可以帮助我了解何时是释放变量的正确时间?

4

4 回答 4

11

纳尔克!:)

如果您调用了包含New 、 Alloc 、ReetainC opy方法,那么您必须使用or 。否则你不要碰它。releaseautorelease

当然,文档中明确说明的任何内容都胜过这条规则。

另一件事是,当您处理 C 函数时,NARC 规则仍然适用,但也会获得 Create 规则:如果函数包含“create”,那么您负责 CFReleasing 或释放返回的数据。

于 2010-06-18T04:14:23.787 回答
6

我强烈建议您通读几次内存管理规则。它很短且不难,一旦您了解了该文档中的内容,您就不必怀疑了。

基本上,将其视为所有权。当您使用 、或创建对象时new,或者当您保留一个对象时,您就拥有该对象。一个对象只要有所有者就不会消失。当你完成了一个对象,你就放弃了它,从而放弃了你的所有权。当对象没有更多所有者时,它可以消失并可能被释放。任何您不拥有、或不属于您且不能保证在当前调用链之后停留的对象(即,可以使用它或返回它,但不能存储它以供以后使用)。copyallocreleasenewallocretaincopy

于 2010-06-18T05:59:52.003 回答
1

资源利用拇指规则是“晚获取,早释放”。这意味着您应该尽可能晚地获取资源并尽可能早地释放。您的使用期限应尽可能短。

于 2010-06-18T03:57:58.887 回答
0

Scott Stevenson 有一个很好的教程,叫做Learn Objective-C。它还包含有关内存管理的部分。

于 2010-06-18T04:09:29.987 回答