如何更改XCode ios SDK编译器设置以允许非void方法的void return语句?

时间:2013-01-29 11:15:37

标签: ios xcode compiler-construction return semantics

我被要求使用一些ios 6功能更新Xcode 3.1中内置的旧ios应用程序。

当我尝试使用我的xcode 4.5构建源代码时,它拒绝编译,因为项目中有很多地方在实际应该返回布尔值或类似值的方法中使用简单的return语句。

Xcode 3.1允许它而4.5不允许。在中间的某个地方,苹果决定添加这个限制。

我的问题是代码超过20,000行代码,开发人员使用简单的return语句,只要他们需要方法来停止执行。由于编译器在遇到第一个错误时停止编译,我必须一次修复一个,然后尝试再次编译它只是为了找到另一个错误。我尝试了2个小时修复100个这样的退货声明。

是否有编译器标志或Xcode构建设置会将这些错误更改为警告并允许我在Xcode 4.5上运行此应用程序?

这是Xcode抛出的确切错误:

/ Users ... / Classes / WaterMaps.m:5471:5:非void方法'initWithParams:mass:radius:totalAssetInfo:'应返回值

请帮助..

1 个答案:

答案 0 :(得分:1)

这与Xcode无关,但与编译器无关。而不是Apple添加了这个限制,编译器不是来自Apple,它们是OpenSource项目(GCCLLVM/clang)。

我可以问为什么花了2个小时来修复100个这样的退货声明?修复100个这样的返回语句不应该花费超过5分钟。

  1. 在某处写return 0;,选择它,将其复制到剪贴板(CMD+C),然后再将其删除。
  2. 在某处写return;,选择它,点击CMD+E将其复制到搜索缓冲区,然后再将其删除。
  3. 转到您的源代码。
  4. 点击CMD+G,表示“找到下一个”。
  5. 如果找到的表达式未标记为错误,请转到(4)。
  6. 点击CMD+V(粘贴),用return;覆盖return 0;
  7. 得(4)。
  8. 所以,每当看到错误时,基本上你会一直按CMD+G来跳过文件和CMD+V。要快速跳转到下一个文件,请在Xcode中打开错误视图:

    enter image description here

    选择第一个文件的第一个错误,每当CMD+G过程到达文件末尾时,点击CMD+'跳转到列表中下一个文件的第一个问题。作为开发人员,您应该学会更有效地使用键盘。将手放在键盘上比在键盘和鼠标/触摸板/轨迹球等之间往返更有效率数百倍。

    代码行的数量(“超过20,000行代码”)是如何相关的?这是相关的退货声明数量。

    您的代码目前严重破坏,而不是浪费时间考虑如何编译这些损坏的代码,我强烈建议您应该去修复它。因为一旦修复,它将永远有效,并且在下次编译器更新时不会再次中断,并且您的上一次黑客攻击不再有效。

    我的意思是如果你只键入return,编译器如何知道你想要返回boolean或int值的方法返回什么?建议`return 0;'适用于返回数值(包括浮点)和布尔值(0 =假/否)的所有方法,并使编译器再次开心。在这种情况下,它与古代C编译器返回的值相同。

    请注意,即使在Xcode 3.1中,那些返回语句也应该在整个地方产生警告。作为一名认真的开发人员,始终将所有警告视为错误。你的项目不应该有任何警告。警告告诉您有问题或者至少可能存在问题,这意味着您应该出去修理它。通过修改代码,几乎所有警告都可以被静音。因此,不要忽略警告或在编译器中禁用它们,而是修复它们。许多公司今天都采用零警告政策,如果您的代码只产生一个警告,则会被拒绝。如果此代码的作者将所有警告视为错误,则您现在不必修复它们。