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

问题描述 投票:0回答:1

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

当我尝试使用 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:非空方法“initWithParams:mass:radius:totalAssetInfo:”应该返回一个值

请帮忙..

ios xcode return semantics
1个回答
1
投票

这与Xcode无关,而是与编译器有关。而且不是 Apple 添加了此限制,编译器不是来自 Apple,它们是开源项目(GCCLLVM/clang)。

请问为什么你花了2个小时才修复100个这样的return语句?修复 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 中打开错误视图:

enter image description here

选择第一个文件的第一个错误,每当您的

CMD+G
程序到达文件末尾时,点击
CMD+'
即可跳转到列表中下一个文件的第一期。作为一名开发人员,您确实应该学习更有效地使用键盘。将手放在键盘上比在键盘和鼠标/触摸板/轨迹球/等之间来回移动的效率提高数百倍。

代码行数(“超过 20'000 行代码”)有何相关性?相关的是返回语句的数量。

您的代码目前严重损坏,我强烈建议您不要浪费时间思考如何编译这些损坏的代码,而是应该去修复它。由于一旦修复,它将永远有效,并且下次更新编译器时不会再次中断,并且您的上一个黑客不再起作用。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.