xcode 8调试器'无法解析类型'

时间:2016-12-08 11:04:53

标签: ios debugging xcode8

在Xcode 8中,当遇到任何断点,并且我尝试在Xcode调试器中打印任何对象时,它总是打印"无法解析类型" 。我在互联网上搜索得足够多了。我已检查EditScheme-> Run-> Info-> BuildConfiguration是否设置为' Debug'。构建设置 - >优化级别设置为“无”'。但没有解释为什么会发生这种情况的线索。谁能帮到我这里?提前致谢。

Xcode8 Debugger

3 个答案:

答案 0 :(得分:2)

我遇到了一个纯粹的swift框架类似的问题,该框架没有任何桥接标头,但是SWIFT_INSTALL_OBJC_HEADER设置为YES

https://stackoverflow.com/a/51186560/385307

中有更详细的描述

将设置更改为NO后,调试将再次起作用。

答案 1 :(得分:1)

我在Swift项目中遇到了类似的问题,其中包括一个Obj-C框架。我使用

在我的Swift项目中导入了框架
import Obj-C-Framework

此外,我还在Swift项目中创建了一个Bridging-Header文件,并使用

包含了Obj-C-Framework头文件。
#include <Obj-C-Framework/Obj-C-Framework.h>

这导致Xcode调试器在断点中打印对象时始终显示&#39;无法解析类型&#39; 。删除桥接头中的#include可以解决问题,并在断点中正确打印对象。

TL; DR如果您的swift项目使用Obj-C框架,请确保框架标题包含在Swift项目的桥接标题中。

答案 2 :(得分:1)

我遇到了同样的问题并且已经解决了。我的项目是OC和Swift的混合项目。我在我的Bridging Header文件中发现了一些导致问题的.h文件导入。当然,.h文件中声明的枚举会导致问题,如下所示:

typedef NS_ENUM(NSInteger,BadgeAlignment) {
    AlignmentCenter,
    AlignmentLeft,
    AlignmentRight,
};

如果我评论代码,一切顺利。

我只是为枚举的每个元素添加一个前缀,问题就解决了。

typedef NS_ENUM(NSInteger,BadgeAlignment) {
    BadgeAlignmentCenter,
    BadgeAlignmentLeft,
    BadgeAlignmentRight,
};

我只是在考虑将.h转换为Swift时是否与Swift中的某些枚举发生冲突。

我仍然感到困惑......