我有一个我作为NSObject创建的类。 这个类有许多不同类型的属性 方法等。
当我在我的应用程序中实例化这个类时(比如在主视图控制器中)我 我完成使用后立即发送一个释放呼叫。即:
MyObject *myObject = [[MyObject alloc] initWithParameters:parms];
[myObject doSomeMethodCall];
[myObject release];
所以我的问题是: 当我释放myObject时,它会自动释放所有声明的对象,变量等。 我在MyObject .h文件中声明了什么?
OR
我是否需要创建一个释放所有这些的自定义发布方法?
我问因为内存管理问题。
谢谢。
答案 0 :(得分:5)
您需要在对象中实现dealloc
方法,并使用该方法释放您拥有的任何资源。
- (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]
移动到方法的末尾,现在它可以正常工作。