【问题标题】:NSXMLParser ownership on dataNSXMLParser 对数据的所有权
【发布时间】:2010-01-12 10:59:33
【问题描述】:

我使用从 Internet 获得的可变数据初始化我的 NSXMLParser。我想知道解析器是在释放时释放它还是我必须在解析后释放它?

谢谢

【问题讨论】:

    标签: cocoa cocoa-touch memory-management nsxmlparser


    【解决方案1】:

    Cocoa 使用“这不是我的问题”来比喻内存管理。

    如果您将某些内容传递给另一个对象,则该对象有责任保留它。

    如果将某些内容传递给您的某个对象,您需要保留它,否则它可能会消失。

    一般传递如下对象:

        [otherObject doSomethingWith:[myThing autorelease]];
    

        [otherObject doSomethingWith:myThing];
        [myThing release];
    

    Cocoa 框架遵循这一原则,您应该以同样的方式设计您的类。

    【讨论】:

      【解决方案2】:

      如果您保留了它,并且不再使用它,请释放它。 NSXMLParser 很可能会保留数据本身并在完成后释放它。

      【讨论】:

      • 谢谢解答,是解析后释放还是无所谓?我看到,如果我之前释放它,我会在未知选择器上崩溃,并且解析器似乎没有保留它
      • 如果你保留了它,你应该在完成后释放它。这意味着在你将它传递给 NSXMLParser 之后。
      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 2023-04-01
      • 2011-06-28
      • 1970-01-01
      • 2012-06-02
      • 2016-11-02
      相关资源
      最近更新 更多