【发布时间】:2011-03-06 20:17:43
【问题描述】:
我正在从“XMLReader”类中读取 XML 文件,该类是我从应用程序委托创建和调用的。在 XMLReader 类中,我创建了一个“AppState”对象,其中包含在 XML 中读取的数据。 XMLReader 在创建 AppState 类时自动释放它。 XMLReader 完成后,应用程序委托将 AppState 实例分配给它自己的变量,保留它,然后释放 XMLReader 类。应用委托中的代码如下所示:
XMLReader *xmlReader = [[XMLReader alloc] init];
[xmlReader parseXMLData: data];
appState = xmlReader.appState; // <== xmmReader creates appState with autorelease
[appState retain];
[xmlReader release];
我有点不清楚是否有一个约定,您不需要在分配对象的类中保留分配的对象。在这种情况下,由于自动释放,它是必需的 - 如果我不在应用程序委托中保留它,应用程序就会崩溃。有没有更好的办法?例如我可以在委托中创建 AppState 并将其设置在 XML 阅读器上。这样分配和释放可以在同一个类中。这样做的典型方法是什么?
【问题讨论】:
标签: iphone objective-c memory