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

Мне было предложено обновить старое приложение ios, встроенное в Xcode 3.1, с некоторыми функциями iOS 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:' должен возвращать значение

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

0
nl ja de

1 ответы

Это не имеет ничего общего с Xcode, но с компилятором. И не Apple добавила это ограничение, компиляторы не из Apple, это проекты OpenSource ( GCC и LLVM/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:

enter image description here

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

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

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

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

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

1
добавлено
@NikhilMathew Перейдите к глобальным настройкам Xcode ( Xcode -> Preferences ... )), на вкладке Общие установите флажок Продолжайте строить после ошибок , и он не остановится и не завершится до конца, собирая все неправильные возвраты void. Тогда вы знаете все это и можете легко их исправить.
добавлено автор Mecki, источник
Привет, Мекки, спасибо за подробный ответ. Но, как я уже упоминал в вопросе, компилятор прекращает компиляцию, как только встречается первое вхождение оператора return void. Поэтому я должен исправить ошибку на основе того, какой тип данных использует метод, или иногда путем изменения объявления метода на void, потому что не будет никакой причины для этого метода вообще возвращать значение. Итак, мой вопрос: знаете ли вы какое-либо решение, что-нибудь вообще, например, могут быть флагов компилятора, похожими на -Wreturn-type или что-то, чтобы остановить компилятор от сообщения об этом как об ошибках, а не о предупреждениях?
добавлено автор Nikhil Mathew, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.