我见过许多NSXMLParser样本,并了解它是如何工作的。例如,这个非常好:
http://wiki.cs.unh.edu/wiki/index.php/Parsing_XML_data_with_NSXMLParser
我看到的所有样本都使用Release在解析期间的某个时刻释放临时对象,这是可以的。但是,如果我打开ARC,我根本无权发布。那么示例代码如何改变?
例如,请查看上面的代码(链接)并解释如何使用ARC ON更改它?
感谢。
答案 0 :(得分:1)
关于如何使用ARC启用非ARC代码的讨论,我将引用您Transitioning to ARC Release Notes。正如Midhun所暗示的那样,您将使用retain
引用替换strong
个引用,并取消release
和autorelease
。您还将删除对[super dealloc]
的来电。所以转换并不难,但有很多项需要注意。
话虽如此,我不同意您的评估,即此示例代码“相当不错”。没有对原作者的侮辱,它有点过时,因此,应用历史惯例而不是现代的当代实践(例如明确声明ivars属性,不使用下划线用于ivar名称等)。我还注意到代码中的一些错误(诸如缺失属性之类的小问题,更重要的事情,如foundCharacters
例程中的错误等)。
我已经清理了代码(将其转换为ARC并解决了许多这些问题)并将其上传到GitHub上的repository。请注意,我做了两件事:
我已经修改了代码,使其在实践中更加现代化(这是UsersParser
类)并修复了一些小错误;
我还对这段代码进行了再现,它更加灵活,XmlArrayParser
,其中解析器类没有为示例使用的用户XML文件进行硬编码。调用它的方法必须理解我们正在寻找的元素,但解析器本身并不关心。
我希望这有帮助。
答案 1 :(得分:0)
当您将其转换为ARC时,将不会有任何
关键字。
为了更好地理解,您应该使用Xcode ARC转换工具转换该示例代码。 完成后,您将获得更好的理解。 请参阅此tutorial以获取帮助。