内存管理的实用规则如下:
-
您只拥有那些您使用名字以“alloc”或“new”开头或者名字中包含“copy”的方法(例如
alloc,newObject或mutableCopy)创建的对象,或者是那些收到了您发送的retain消息的对象。许多类提供了形如
+className...的方法,您可以使用它们获得该类的一个新的实例。这些方法通常被称为“简便构造函数”,它们创建一个新的类的实例,对其进行初始化并将其返回供您使用。您并不拥有从简便构造函数或其它存取方法返回的对象。 -
一旦您使用完一个您拥有的对象,您应该使用
release或autorelease释放这个对象的所有权。通常,您应该使用
release,而不是autorelease。只有在不适合立即回收对象的情况下,您才应该使用autorelease,比如您要从某个方法返回对象。(注意:这并不是说release必然会引起对象的回收—只有当保留计数减少至0时才会发生回收—但它也有可能会发生,而有时您需要防止出现这种情况,请参考“从方法返回对象”中的例子。) -
实现
dealloc方法来释放您拥有的实例变量。 -
您不应该直接调用
dealloc(除非是您在自定义的dealloc方法中调用超类的实现)。
本文介绍了内存管理的基本规则,包括对象所有权的获取与释放、使用alloc或new等方法创建对象的情况、对象的 autorelease 和 release 使用场景、dealloc 方法的应用以及不应直接调用 dealloc 的情况。
7876

被折叠的 条评论
为什么被折叠?



