任何人都可以告诉我,启用垃圾收集的正确用法,基本上我无法理解以下内容,
1 - 我正在开发第三方应用程序,它已启用垃圾收集, 2 - 仅用于试验我禁用的垃圾收集器并使用“不支持的”垃圾收集器编译, 3 - 我构建应用程序,但是当我尝试运行相同的程序时,它会出错并给出
Program received signal: “EXC_BAD_ACCESS”
可能只是应用程序中的一些问题,并且通过使用垃圾收集来防止,所以我想知道,继续使用垃圾收集器是一个好习惯,还是禁用它并尝试修复所有这类错误。
另外,使用垃圾收集会导致任何额外的内存溢出?
答案 0 :(得分:2)
任何人都可以告诉我,启用垃圾收集的正确用法,基本上我无法理解以下内容,
1 - 我正在开发第三方应用程序,它已启用垃圾收集,2 - 仅用于试验我禁用的垃圾收集器并使用“不支持的”垃圾收集器编译,3 - 我构建应用程序,但是当我尝试运行相同的时候,它会出错并给予
Program received signal: “EXC_BAD_ACCESS”
好吧,等一下。您是要尝试启用还是禁用它?首先你说你想知道启用它,但是你的步骤列表说它已经启用并且你禁用了它。
垃圾收集代码和引用计数代码不同。您不能将编写的代码用于期望GC,在引用计数下编译它,并期望它能够工作。如果它甚至编译,崩溃确实是最可能的结果。 (另一种方式的代码将无法编译。)
您可以尝试转换为ARC,与旧的手动引用计数相比,它的差异较小。但是,使用GC编译的GC代码仍然完全有效,至少现在是这样;在启用GC时,在没有GC运行GC代码时看到的“故障”不是故障。
因此,最好只启用GC,至少在您熟悉该代码和语言之前。
答案 1 :(得分:1)
如果项目已经在垃圾收集环境中,那么你应该继续使用它 - 除非你真的想要浏览所有代码并管理内存。最后虽然有什么好处?可以从GC远离速度改进,但对于大多数应用程序,它们将不会被注意到,并且根据项目的大小,可能需要很长时间才能使其正常运行。您还会大大增加引入错误的机会。
如果该应用仅限Lion,您可以考虑从GC迁移到ARC,尽管这也需要时间进行整合。
如果您还没有建议我阅读Apple's Garbage Collection Programming Guide。