objective-c 内存管理的实用规则(摘录)

2011-04-06

内存管理的实用规则如下(也可以参考“内存管理规则”):

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