使用自动释放需要禁用ARC

时间:2014-01-29 14:25:31

标签: objective-c automatic-ref-counting

您好我是Apple开发的新手 我在我的项目中使用了这段代码 https://github.com/vladinecko/accordion-uitableview/tree/master/AccordionTableView ,project使用autorelease释放内存本身 是什么让我禁用ARC 因为ARC不允许使用自动释放 我的问题是是否从代码中删除自动释放 并使用ARC或我不能这样做,我需要为自己释放内存

3 个答案:

答案 0 :(得分:4)

您可以将代码保留为原样 - 您可以使用ARC编译某些文件而不使用其他文件,但这样做会很麻烦且难以维护。

我建议做的是在代码上运行Xcode的ARC-ifying,以摆脱保留和释放以及自动释放。

在Xcode 5中,查看“Refactor”的“Edit”菜单,然后选择“Convert to ObjC ARC”。

答案 1 :(得分:0)

显然AccordionTableView不使用ARC,而在您的项目中使用它。

所以你有三个选择

  • 仅针对来自AccordionTableView
  • 的单独编译单元关闭ARC
  • 使用ARC指南调整AccordionTableView项目的代码段
  • 将您自己的项目切换为不使用ARC

答案 2 :(得分:0)

首先,作为Objective-C开发的新手,您需要了解内存管理的工作原理。谷歌为“Apple内存管理”而你应该找到相关文件。

在ARC之前,人们手工进行内存管理。使用ARC,ARC可以为您完成。完全相同的内存管理操作应该发生,除了使用ARC你没有更少的程序员工作,并且更好地做到正确的机会。

您有两种选择:关闭单个文件的ARC。这是在Xcode /目标设置/构建阶段/编译源中完成的,方法是将-fno-objc-arc添加到您不想使用ARC的单个文件的构建设置中。如果在不同的项目中使用相同的文件,则必须在每个目标中执行此操作。

另一种选择是将文件转换为ARC。让编译器运行,删除有问题的内存管理代码,主要是保留/释放/自动释放。如果代码使用CoreFoundation函数,那么真的需要理解内存管理,只希望它不会。使用“Analyze”让编译器仔细检查一切正常。