我需要在我的应用程序中快速简单地解析一个 XML 文件。对我来说最好的解决方案似乎是类似于 XML-to-NSDictionary 转换器的东西,然后我可以更容易地挖掘它。
我选择使用这个小类:http ://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/
但是,我对返回的内容NSDictionary*
及其在内存中的状态感到困惑。类方法dictionaryForXMLData
分配并初始化类。objectWithData
然后关闭并执行繁重的工作NSDictionary
,将返回给调用者的对象返回。
对我来说令人困惑的部分是[reader release]
在返回之前(我知道这必须发生,因为reader
创建的方式)。我的理解NSDictionary
是所有对象也将被发送release
消息,这意味着我们返回的对象不应该有保留计数。请注意,该对象是使用便捷方法创建的,并且仅在将其添加到堆栈时才获得保留计数。
如果 return 语句不是return [rootDictionary autorelease]
. 我看到的问题是不知道什么时候rootDictionary
会被释放,并且取决于 XML 文件的大小,它可能会阻塞内存?还是我全都错了?