当我使用 Sprite Kit 创建一个新的 OS X“游戏”项目,并在任何可以看到变量值的地方设置断点时:
然后我更改代码以导入我自己的框架(TilemapKit),这是一个纯 Objective-C 框架:
import SpriteKit
import TilemapKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
print("dang!")
}
}
没有进行其他更改。我什至没有使用任何 TilemapKit 代码(还)。当断点触发时,我看到:
就观察变量值而言,整个项目不再可调试。这种行为是完全一致的。如果没有框架导入,我可以再次调试。
由于我使用的是 Xcode 7 beta (7A121l) 和 OS X 10.11 开发者预览版,我知道这可能只是一个(临时)错误。
命令行 Tiles 设置为使用 Xcode 7.0 版本 btw。我尝试在框架目标中启用模块,确保部署目标相同(10.11),禁用符号剥离。我添加了一个 Bridging Header 并在其中 #imported TilemapKit 框架(在这种情况下删除 Swift 导入仍然会给我不可调试的应用程序,因此我导入框架的方式或位置似乎并不重要)。
有没有人对可能导致这种行为的原因以及我如何解决它有建议 - 或者至少我可以如何尝试缩小问题范围?
罪魁祸首是否更有可能与项目的构建设置与框架的构建设置有关?我是否需要在应用项目中启用某些功能以使其与 ObjC 框架兼容?(我已经在其他链接器标志中获得了 -ObjC)
更新:
我po self
在调试控制台中运行并发现了这个通知:
<built-in>:3:6: error: module 'TilemapKit' was built in directory '/TilemapKit.framework' but now resides in directory './TilemapKit.framework'
#define __clang_major__ 7
^
missing required module 'TilemapKit'
Debug info from this module will be unavailable in the debugger.
框架构建目录怎么变了?为什么这很重要以及如何解决这个问题?
PS:新的 ObjC 应用程序中的相同框架可以很好地调试。