释放对象

时间:2012-02-08 12:08:08

标签: objective-c ios

我在dealloc方法中发布由@property指令创建的对象,如此

-(void)dealloc
{
  [object release], object = nil;
}

我有两个问题。

  1. dealloc方法是否是释放@property生成的对象的正确位置?
  2. 将对象设置为nil是一个好习惯吗?

2 个答案:

答案 0 :(得分:1)

是的,在释放对象后将指针设置为指向nil是一个好习惯。原因是,如果您在对象被取消分配后尝试访问该对象的值,您将尝试访问垃圾值(它被称为悬空指针),您的应用程序将崩溃。但是如果指针设置为nil,那么你可以对它做任何事情,因为你可以向nil对象发送消息。

要将两行代码合二为一,只需使用访问器方法:

self.object = nil; //this will both release an object and set its pointer to nil

答案 1 :(得分:0)

  1. 这是释放对象的正确位置。显然,只有你没有使用ARC进行编译,尽管与ARC一样,你甚至无法调用release

  2. 没有必要将其设置为nil。它将被彻底摧毁 - 为什么还要将它设置为nil