为什么发布的版本比调试更严格

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

在此代码行中:

NSInteger答案= 3; NSString * s = [NSStringstringWithFormat:@“%ld”,answer];

在Xcode 10.3中,在调试版本下没有错误。在发行版本下,我得到此错误:

'NSInteger'类型的值不应用作格式参数;加显式强制转换为'long',而不是[-Werror,-Wformat]

我理解为什么会出错,我也应该将答案强制转换为(long),如果我以@“%d”开头,编译器将抱怨并解决问题。但是当ld存在时,调试版本的编译器保持安静,但在发行版本中,它会引发标志。

关于什么设置会导致这种情况的任何想法?

提前感谢!

objective-c xcode gcc gcc-warning
1个回答
0
投票

您的问题的答案相当广泛,但我认为您应该有个主意。就像上面的评论一样,在调试和生产版本发布时,有很多因素可以过滤将要进行的更改。为了性能和兼容性,苹果对发布非常严格。因此,“构建”设置中某些构建配置的默认值与“用于调试和发布的构建”完全不同。

请看下面所附的图像。enter image description here

enter image description here

注意:大多数都可以根据您的喜好进行定制,但这确实会影响构建过程以及交付!

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