Почему релизные сборки должны быть более строгими, чем отладочные? - PullRequest
0 голосов
/ 09 октября 2019

В этой строке кода:

NSInteger answer = 3;NSString * s = [NSString stringWithFormat: @ "% ld", answer];

В Xcode 10.3 при отладочной сборке ошибки нет. При сборках релиза я получаю эту ошибку:

значения типа 'NSInteger' не должны использоваться в качестве аргументов формата;вместо этого добавьте явное приведение к 'long' [-Werror, -Wformat]

Я понимаю причину ошибки, поэтому я должен также привести ответ к (long), и компилятор будет жаловаться иисправить проблему, если я начну с @ "% d". Но когда ld есть, компилятор в отладочных сборках хранит молчание, но при выпуске он поднимает флаг.

Любые идеи относительно того, какой параметр вызовет это?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 октября 2019

Ответ на ваш вопрос довольно широкий, но я думаю, вы должны понять. Как и в приведенном выше комментарии, существует целый ряд факторов, которые фильтруют изменения, которые будут предприняты при сборке для отладки и сборке для выпуска продукта. По производительности и совместимости Apple очень строга к релизам. Таким образом, значения по умолчанию для некоторых конфигураций сборки в настройках сборки довольно сильно отличаются от сборки для отладки и выпуска.

Посмотрите на изображения ниже:

enter image description here

enter image description here

Примечание: большинство из них можно настроить по вашему вкусу, но это влияет как на процесс строительства, так и на доставку!

...