0

我被要求用一些 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:' 应该返回一个值

请帮忙..

4

1 回答 1

1

这与 Xcode 无关,而与编译器有关。并不是 Apple 添加了这个限制,编译器不是来自 Apple,它们是开源项目(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)。

所以基本上你一直点击CMD+G跳转文件,CMD+V每当你看到一个错误。要快速跳转到下一个文件,请在 Xcode 中打开错误视图:

在此处输入图像描述

选择第一个文件的第一个错误,只要您的CMD+G程序到达文件末尾,就会CMD+'跳到列表中下一个文件的第一个问题。作为开发人员,您应该真正学会更有效地使用键盘。将您的手放在键盘上使您的工作效率比在键盘和鼠标/触摸板/轨迹球/等之间来回移动高出数百倍。

代码行的数量(“超过 20,000 行代码”)有什么关系呢?这是相关的返回语句的数量。

您的代码目前严重损坏,与其浪费时间思考如何编译这些损坏的代码,我强烈建议您宁愿去修复它。由于一旦修复,它将永远工作,并且在下次更新编译器并且您的最后一次破解不再工作时不会再次中断。

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

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

于 2013-01-29T11:49:25.100 回答