使用 Objective-C 时是否有任何经验法则可以帮助我了解何时是释放变量的正确时间?
4 回答
纳尔克!:)
如果您调用了包含New 、 Alloc 、Reetain或C opy的方法,那么您必须使用or 。否则你不要碰它。release
autorelease
当然,文档中明确说明的任何内容都胜过这条规则。
另一件事是,当您处理 C 函数时,NARC 规则仍然适用,但也会获得 Create 规则:如果函数包含“create”,那么您负责 CFReleasing 或释放返回的数据。
我强烈建议您通读几次内存管理规则。它很短且不难,一旦您了解了该文档中的内容,您就不必怀疑了。
基本上,将其视为所有权。当您使用 、或创建对象时new
,或者当您保留一个对象时,您就拥有该对象。一个对象只要有所有者就不会消失。当你完成了一个对象,你就放弃了它,从而放弃了你的所有权。当对象没有更多所有者时,它可以消失并可能被释放。任何您不拥有、或不属于您且不能保证在当前调用链之后停留的对象(即,可以使用它或返回它,但不能存储它以供以后使用)。copy
alloc
release
new
alloc
retain
copy
资源利用拇指规则是“晚获取,早释放”。这意味着您应该尽可能晚地获取资源并尽可能早地释放。您的使用期限应尽可能短。
Scott Stevenson 有一个很好的教程,叫做Learn Objective-C。它还包含有关内存管理的部分。