我正在创建自定义 UITableViewCell 的子类。超类有一些在 dealloc 方法中释放的属性。我在我的子类中添加了一个额外的属性,所以我确保重写 dealloc 方法并释放我的新属性。
我的问题是,既然我覆盖了dealloc方法,那么在超类dealloc方法中释放的属性是否不会被释放(我正在调用[super dealloc])?我是否需要在我的 dealloc 方法中专门释放那些?
我正在创建自定义 UITableViewCell 的子类。超类有一些在 dealloc 方法中释放的属性。我在我的子类中添加了一个额外的属性,所以我确保重写 dealloc 方法并释放我的新属性。
我的问题是,既然我覆盖了dealloc方法,那么在超类dealloc方法中释放的属性是否不会被释放(我正在调用[super dealloc])?我是否需要在我的 dealloc 方法中专门释放那些?
如果您正在调用[super dealloc]
,那么 的超类实现-dealloc
仍将运行。超类应该负责释放它自己的属性。所以不,您不需要释放超类属性。事实上,这样做很可能会导致您的应用程序崩溃。
如果你打电话[super dealloc]
,你很好。该方法不知道它是由子类调用还是由运行时直接调用,它会照常工作并照常处理自己的属性。
重要提示:[super dealloc]
在您拥有自己的 ivars 并在 -dealloc 中完成您需要做的任何其他事情之后,在您的 -dealloc 方法中调用最后一个。当该方法返回时,您的对象不会留下任何东西。