NSXMLParser样本和ARC

时间:2012-12-20 03:43:44

标签: ios nsxmlparser

我见过许多NSXMLParser样本,并了解它是如何工作的。例如,这个非常好:

http://wiki.cs.unh.edu/wiki/index.php/Parsing_XML_data_with_NSXMLParser

我看到的所有样本都使用Release在解析期间的某个时刻释放临时对象,这是可以的。但是,如果我打开ARC,我根本无权发布。那么示例代码如何改变?

例如,请查看上面的代码(链接)并解释如何使用ARC ON更改它?

感谢。

2 个答案:

答案 0 :(得分:1)

关于如何使用ARC启用非ARC代码的讨论,我将引用您Transitioning to ARC Release Notes。正如Midhun所暗示的那样,您将使用retain引用替换strong个引用,并取消releaseautorelease。您还将删除对[super dealloc]的来电。所以转换并不难,但有很多项需要注意。

话虽如此,我不同意您的评估,即此示例代码“相当不错”。没有对原作者的侮辱,它有点过时,因此,应用历史惯例而不是现代的当代实践(例如明确声明ivars属性,不使用下划线用于ivar名称等)。我还注意到代码中的一些错误(诸如缺失属性之类的小问题,更重要的事情,如foundCharacters例程中的错误等)。

我已经清理了代码(将其转换为ARC并解决了许多这些问题)并将其上传到GitHub上的repository。请注意,我做了两件事:

  1. 我已经修改了代码,使其在实践中更加现代化(这是UsersParser类)并修复了一些小错误;

  2. 我还对这段代码进行了再现,它更加灵活,XmlArrayParser,其中解析器类没有为示例使用的用户XML文件进行硬编码。调用它的方法必须理解我们正在寻找的元素,但解析器本身并不关心。

  3. 我希望这有帮助。

答案 1 :(得分:0)

当您将其转换为ARC时,将不会有任何

  • 保留
  • 释放
  • 自动释放

关键字。

为了更好地理解,您应该使用Xcode ARC转换工具转换该示例代码。 完成后,您将获得更好的理解。 请参阅此tutorial以获取帮助。

相关问题