意外的类型名称“BOOL”:iOS SDK 6.1(设备)中的预期表达式

Posted

技术标签:

【中文标题】意外的类型名称“BOOL”:iOS SDK 6.1(设备)中的预期表达式【英文标题】:Unexpected type name 'BOOL': expected expression in iOS SDK 6.1 (Device) 【发布时间】:2013-04-15 11:20:07 【问题描述】:

模拟器的 ios 应用程序构建良好。但是,当我尝试为设备构建时,@YES 和 @NO 文字的编译失败。我们使用 iOS 6.1 作为构建 SDK,但保留了 5.1。 iPad 的操作系统版本是 6.1.3。有什么我遗漏的可能导致失败的原因吗?

Fragment from build log: /Applications/Xcode-4.6.app/Contents/Developer/Platforms/
    iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/include/objc/objc.h:50:26
    : note: expanded from macro 'YES'
#define YES             (BOOL)1

在构建中选择 5.1 SDK 有什么原因吗?

部署目标是 5.0,但将其更改为 6.1 并不能解决问题。 Xcode 版本:4.6 (4H127)

是的,我知道使用 @(YES) 和 @(NO) 可以解决此问题,但这是 5.0 解决方案。

【问题讨论】:

我记得曾经看到过一些关于这个的东西,试着改用@(YES) @MarceloFabri 已更新 - 4.6 (4H127)。 您是否尝试过清理项目并删除 DerivedData? 一圈可以有header导入吗?您是否在某处手动导入 objc.h 标头?还是重新定义(BOOL)?尝试检查编译失败的确切位置。或者可能是非标准的编译器参数?还是您自己的预处理器指令与 Apple 标头中的预处理器指令冲突? 苏丹 - 不。这段代码在两周前编译得很好。看到它为模拟器构建得很好。 【参考方案1】:

残酷的回答:

安装新的 Xcode 并不再删除(此时)5.1 SDK 解决了该问题。很难说到底发生了什么,但建议将您的工具升级到最新版本。

【讨论】:

以上是关于意外的类型名称“BOOL”:iOS SDK 6.1(设备)中的预期表达式的主要内容,如果未能解决你的问题,请参考以下文章

虽然 ios 6.1 作为基础 sdk xcode 5 为 ios 7 构建 ipa

ios 7 模拟器不会回退针对 ios 6.1 sdk 编译的应用程序的用户界面

iOS 6.1需要代码签名[重复]

有没有办法在 VS2012 中使用 sdk 6.1 远程构建 Xamarin.iOS?

想要在 iOS sdk 中反转 BOOL 值

Spotify IOS SDK Beta 结束播放供应商。 Code=4 传递了一个意外的 NULL 指针