【问题标题】:Releasing custom made NSObject class in iOS App在 iOS App 中发布定制的 NSObject 类
【发布时间】:2010-08-30 14:51:28
【问题描述】:

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

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: ios memory-management nsobject dealloc


    【解决方案1】:

    您需要在您的对象中实现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 方法,它会在需要清理时由运行时自动调用。

    【讨论】:

    • 这很好,但是我有一个 NSDictionary 对象,当我在 -(void)dealloc 调用中释放它时,它会使我的应用程序崩溃......我不知道为什么......
    • 你在其他地方保留了那本字典吗?
    • 不,但我将字典中的值分配给其他对象,例如字符串。在我尝试释放 NSDictionary 之前,这些其他对象无论如何都会被释放,但它仍然会使应用程序崩溃。此外,当我将 [super dealloc] 放入 -(void)dealloc 方法时,它会使我的应用程序崩溃。有趣的是,如果我不使用调试器运行它,它只会使我的应用程序崩溃。如果我使用调试器运行它并调用 [super dealloc],它不会崩溃。奇怪..
    • 我发现了关于 [super dealloc] 和 NSDictionary 的问题。发布起来有点复杂,而且确实与我犯的一些错误有关。无论如何,这一切现在都在我的应用程序中运行良好。
    【解决方案2】:

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

    Dealloc 将在最后一次运行 对对象的引用已 发布。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多