Macos Xcode应用程序,带或不带垃圾收集,

Macos Xcode应用程序,带或不带垃圾收集,,macos,cocoa,garbage-collection,objective-c++,Macos,Cocoa,Garbage Collection,Objective C++,谁能告诉我,启用垃圾收集的正确用法,基本上我无法理解以下内容 1--我正在开发一个第三方应用程序,它启用了垃圾收集功能, 2--只是为了试验,我禁用了垃圾收集器,并使用“不受支持的”垃圾收集器进行编译, 3--我构建了应用程序,但当我尝试运行相同的应用程序时,它出现了故障,并且 Program received signal: “EXC_BAD_ACCESS” Program received signal: “EXC_BAD_ACCESS” 可能只是在应用程序中出现了一些问题,并且通过

谁能告诉我,启用垃圾收集的正确用法,基本上我无法理解以下内容

1--我正在开发一个第三方应用程序,它启用了垃圾收集功能, 2--只是为了试验,我禁用了垃圾收集器,并使用“不受支持的”垃圾收集器进行编译, 3--我构建了应用程序,但当我尝试运行相同的应用程序时,它出现了故障,并且

Program received signal:  “EXC_BAD_ACCESS”
Program received signal:  “EXC_BAD_ACCESS”
可能只是在应用程序中出现了一些问题,并且通过使用垃圾回收来防止,所以我想知道,继续使用垃圾回收器,或者禁用它并尝试修复所有此类故障是一种好的做法


另外,使用垃圾收集会导致额外的内存溢出吗

如果项目已经在垃圾收集环境中,那么您应该继续使用它,除非您真的想检查所有代码并管理内存。但最终会有什么好处呢?GC可能会带来速度提升,但对于大多数应用程序来说,它们不会被注意到,而且根据项目的大小,可能需要很长时间才能正常运行。您还将大大增加引入错误的机会

如果App是狮子,你可以考虑从GC移动到ARC,虽然这也需要时间来集成。


如果您还没有读过,我建议您阅读。

如果项目已经在垃圾收集环境中,那么您应该继续使用它-除非您真的想浏览所有代码并管理内存。但最终会有什么好处呢?GC可能会带来速度提升,但对于大多数应用程序来说,它们不会被注意到,而且根据项目的大小,可能需要很长时间才能正常运行。您还将大大增加引入错误的机会

如果App是狮子,你可以考虑从GC移动到ARC,虽然这也需要时间来集成。 如果你还没有,我建议你阅读

谁能告诉我,启用垃圾收集的正确用法,基本上我无法理解以下内容

1--我正在开发一个第三方应用程序,该应用程序启用了垃圾收集,2--只是为了试验我禁用了垃圾收集器并使用“不受支持的”垃圾收集器进行编译,3--我构建了该应用程序,但当我试着运行该应用程序时,它出现了故障并给出了错误的答案

Program received signal:  “EXC_BAD_ACCESS”
Program received signal:  “EXC_BAD_ACCESS”
等等。您是要启用还是禁用它?首先,您说您想知道如何启用它,但随后您的步骤列表显示它已启用,您已禁用它

垃圾收集代码和引用计数代码不同。您不能接受为期望GC而编写的代码,在引用计数下编译它,然后期望它工作。如果它能够编译,那么崩溃确实是最有可能的结果。(相反方向的代码将无法编译。)

您可以尝试转换为ARC,这将比旧的手动参考计数有更少的差异。然而,用GC编译的GC代码仍然是完全有效的,至少目前是这样;在没有GC的情况下运行GC代码时看到的“错误”在启用GC时不是错误

因此,可能最好是保持启用GC,至少在您更熟悉该代码和语言之前

谁能告诉我,启用垃圾收集的正确用法,基本上我无法理解以下内容

1--我正在开发一个第三方应用程序,该应用程序启用了垃圾收集,2--只是为了试验我禁用了垃圾收集器并使用“不受支持的”垃圾收集器进行编译,3--我构建了该应用程序,但当我试着运行该应用程序时,它出现了故障并给出了错误的答案

Program received signal:  “EXC_BAD_ACCESS”
Program received signal:  “EXC_BAD_ACCESS”
等等。您是要启用还是禁用它?首先,您说您想知道如何启用它,但随后您的步骤列表显示它已启用,您已禁用它

垃圾收集代码和引用计数代码不同。您不能接受为期望GC而编写的代码,在引用计数下编译它,然后期望它工作。如果它能够编译,那么崩溃确实是最有可能的结果。(相反方向的代码将无法编译。)

您可以尝试转换为ARC,这将比旧的手动参考计数有更少的差异。然而,用GC编译的GC代码仍然是完全有效的,至少目前是这样;在没有GC的情况下运行GC代码时看到的“错误”在启用GC时不是错误


所以,可能最好是保持启用GC,至少在您对该代码和语言更加熟悉之前。

谢谢Peter,详细解释,还有一个问题,我在Xcode 3.2上,我可以在里面设置ARC吗。@Rohan:这应该是一个单独的问题。谢谢Peter,详细解释,还有一个问题,我使用的是Xcode 3.2,我可以在里面安装ARC吗?@Rohan:这应该是一个单独的问题。请注意,启用ARC的应用程序不需要Lion。您可以返回到Snow Leopard,并且仍然在应用程序中使用ARC。请注意,启用ARC的应用程序不需要Lion。您可以将目标放回雪豹,并在应用程序中仍然使用ARC。