Как изменить параметры компилятора XCode ios SDK, чтобы разрешать инструкции void return для непустых методов?

Мне было предложено обновить старое приложение ios, встроенное в Xcode 3.1, с некоторыми функциями [iOS](/tag5122) 6.

Когда я попытался создать источник, используя мой xcode 4.5, он отказывается компилировать, потому что в проекте есть множество мест, где простые возвращаемые операторы используются в методах, которые фактически должны возвращать логическое или аналогичное значение.

Xcode 3.1 позволяет это, а 4.5 - нет. Где-то посередине яблоко решило добавить это ограничение.

Моя проблема заключается в том, что код содержит более 20 000 строк кода, и разработчики использовали простые операторы возврата, где когда-либо им нужен был метод, чтобы остановить выполнение. Поскольку компилятор останавливает компиляцию, когда она сталкивается с первой из этих ошибок, я должен ее исправлять по одному, а затем попытаться собрать ее снова, только чтобы найти другую ошибку. Я пробовал, как 2 часа, фиксируя 100 таких возвратных заявлений.

Есть ли флаг компилятора или настройка сборки Xcode, который изменит эти ошибки в качестве предупреждений и позволит мне запустить это приложение на Xcode 4.5?

Это точная ошибка, которую вызывает Xcode:

/Users.../Classes/WaterMaps.m:5471:5: Непустой метод 'initWithParams: mass: radius: totalAssetInfo:' должен возвращать значение

Пожалуйста помоги..

Это не имеет ничего общего с Xcode, но с компилятором. И не Apple добавила это ограничение, компиляторы не из Apple, это проекты OpenSource ( [GCC](https://gcc.gnu.org/)  и  [LLVM/clang](https://llvm.org/) ).

Могу ли я спросить, почему вам потребовалось 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:

![enter image description here](https://i.stack.imgur.com/3zPnB.png)

Выберите первую ошибку первого файла и всякий раз, когда ваша процедура  `CMD + G`  достигнет конца файла, нажмите  `CMD + '`, который переходит к первому выпуску следующего файла на список. Как разработчик, вы должны научиться более эффективно использовать свою клавиатуру. Хранение рук на клавиатуре делает вас в сотни раз более производительным, чем движение вперед и назад между клавиатурой и мышью/тачпадом/трекболом/и т. Д.

И каково количество строк кода («более 20 000 строк кода») даже релевантно? Это количество возвращаемых заявлений, которое имеет значение.

Ваш код в настоящее время серьезно нарушен, и вместо того, чтобы тратить время на размышления о том, как сделать этот сломанный код, я настоятельно рекомендовал вам лучше пойти и исправить его. С тех пор, как исправлено, он будет работать вечно и не прерываться снова в следующий раз, когда компиляторы будут обновлены, а ваш последний взлом не будет работать.

Я имею в виду, как компилятор знает, что вы хотите вернуть для метода, который возвращает значение boolean или int, если вы только набираете return? Предлагаемый `return 0; ' работает для всех методов, возвращающих числовое значение (включая с плавающей запятой) и booleans (0 = false/NO) и снова делает компилятор счастливым. Это то же значение, которое было возвращено древними компиляторами C в этом случае.

Обратите внимание, что даже в Xcode 3.1 эти возвращаемые операторы должны были вызывать предупреждения повсюду. Как сильный разработчик,  **всегда обрабатывает все предупреждения как ошибки** . У проекта не должно быть никаких предупреждений. Предупреждения говорят вам, что что-то не так или, по крайней мере, может быть что-то неправильно, и это означает, что вы должны выйти и исправить. Почти все предупреждения можно отключить, изменив код. Поэтому вместо того, чтобы игнорировать предупреждения или отключать их в компиляторе, исправьте их. Сегодня у многих компаний есть политика нулевого предупреждения, и если ваш код производит только одно предупреждение, он отклоняется. Если автор этого кода рассматривал все предупреждения как ошибки, вам не пришлось бы исправлять их.