2

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

当我在我的应用程序中实例化这个类时(比如在主视图控制器中),当我使用完它时,我会立即向它发送一个发布调用。IE:

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

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

或者

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

我问是因为内存管理问题。

谢谢你。

4

4 回答 4

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 方法,它会在需要清理时由运行时自动调用。

于 2010-08-30T14:59:41.073 回答
0

来自iPhone - 何时调用 viewcontroller 的 dealloc?

Dealloc 将在对对象的最后一个引用被释放时运行。

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

于 2010-08-30T14:55:14.903 回答
0

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

于 2010-08-30T14:56:04.453 回答
0

我有同样的问题Zigglzworth,这是[super dealloc]电话的位置。我在我的-(void)dealloc方法开始时就有它,每次都会导致崩溃。在变量 release 语句之后移动[super dealloc]到方法的末尾,现在它工作得很好。

于 2011-10-25T01:27:17.140 回答