在iOS App中发布定制的NSObject类

时间:2010-08-30 14:51:29

标签: ios memory-management nsobject dealloc

我有一个我作为NSObject创建的类。 这个类有许多不同类型的属性 方法等。

当我在我的应用程序中实例化这个类时(比如在主视图控制器中)我 我完成使用后立即发送一个释放呼叫。即:

MyObject *myObject = [[MyObject alloc] initWithParameters:parms];
[myObject doSomeMethodCall];
[myObject release];

所以我的问题是: 当我释放myObject时,它会自动释放所有声明的对象,变量等。 我在MyObject .h文件中声明了什么?

OR

我是否需要创建一个释放所有这些的自定义发布方法?

我问因为内存管理问题。

谢谢。

4 个答案:

答案 0 :(得分:5)

您需要在对象中实现dealloc方法,并使用该方法释放您拥有的任何资源。

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-SW4

- (void)dealloc {
    [mainSprocket release];
    [auxiliarySprocket release];
    [super dealloc];
}

重要提示:您永远不会在对象上调用dealloc方法,它会在清理时由运行时自动调用。

答案 1 :(得分:0)

来自iPhone - when is dealloc for a viewcontroller called?

  

Dealloc将在最后一次运行   已经引用了一个对象   释放。

所以当你释放你的对象时,它会运行dealloc。所以将所有版本等都放入对象的dealloc方法中。

答案 2 :(得分:0)

最终,它将在myObject上调用dealloc方法。在myObject的dealloc方法中,您应该释放myObject具有的所有实例变量。另外,不要忘记[super dealloc]

答案 3 :(得分:0)

我遇到与Zigglzworth相同的问题,这是[super dealloc]电话的位置。我在我的-(void)dealloc方法的开头就有了它,每次都会导致崩溃。在变量发布语句之后将[super dealloc]移动到方法的末尾,现在它可以正常工作。