Dealloc在我的自定义目标-C上

时间:2010-06-05 16:37:06

标签: iphone objective-c oop

我正在开发一个iPhone应用程序,我在iPhone开发方面非常新。

我用实例变量(NSArray,NSString等)创建了一些自定义类。所有类都继承自NSObject。

我应该创建一个dealloc方法来释放所有实例变量吗?

谢谢。

4 个答案:

答案 0 :(得分:3)

是的,如果要保留作为对象的实例变量,则肯定需要dealloc。您可能还需要保留或复制它们,具体取决于对象创建/使用它们的方式。

查看有关内存管理的this article。我认为它解释得很好。您还必须阅读Memory Management Programming Guide for Cocoa。即使你没有完全理解一切,阅读整篇文章,然后阅读文章,然后做一些工作,得到一些崩溃并再次阅读:)最终它应该全部点击。

答案 1 :(得分:0)

在iPhone开发中,由于没有垃圾收集,因此需要一个dealloc。

答案 2 :(得分:0)

您必须释放您的班级拥有的任何对象。这意味着,是的,您必须覆盖dealloc方法并在那里释放对象。

通常,您对实例变量中的值(对象)拥有所有权,但它还依赖于您创建它们的

你绝对应该阅读Memory Management Programming Guide,它很好地描述了你获得所有权。

答案 3 :(得分:0)

是的,采用dealloc方法通常是最好的方法。

如果要回收实例变量使用的内存,则必须在完成后释放它们。你可以添加一个方法来进行清理: -

- (void)cleanUp {
  [myArray release];
  [myString release];
}

当您不再需要实例时调用它。

现在,您希望释放这些变量的时间点可能是其父对象被销毁的时间点(父对象消失,因此不再需要实例变量)。当父对象将被销毁时,会自动为您调用-dealloc - 将清理代码放在dealloc中比在我们必须在正确的时间调用的-cleanup方法更有意义。

如果您不想重复使用内存,例如。如果您从不将完成实例变量,那么您不需要释放它们,也可能不需要-dealloc。