Lea*_*s2D 39 debugging xcode frameworks swift2 xcode7-beta2
当我使用Sprite Kit创建一个新的OS X"Game"项目,并在任何地方设置断点时,我可以看到变量值就好了:
然后我更改代码以导入我自己的框架(TilemapKit),这是一个纯粹的Objective-C框架:
import SpriteKit
import TilemapKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
print("dang!")
}
}
Run Code Online (Sandbox Code Playgroud)
没有其他变化.我甚至没有使用任何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.
Run Code Online (Sandbox Code Playgroud)
为什么框架构建目录发生了变化?那为什么会这么重要以及如何解决这个问题?
PS:新的ObjC应用程序中的相同框架可以调试得很好.
Lea*_*s2D 22
我从Apple开发人员那里得到一条消息,说他们已经观察到了这个问题,并且可以通过将.framework移动到项目的子文件夹来修复它.
显然,module .. was built in directory
只有.framework与.xcodeproj aka位于同一文件夹中时才会出现错误$(PROJECT_DIR)
.
然而,将框架移动到子文件夹并没有解决我的问题,但它仍然值得一试,直到在新的Xcode 7 beta中修复(仍然发生在beta 3).
Hug*_*ugo 16
在我的情况下,这是因为import
我的项目中的冗余语句.
我的项目混合了swift和objc文件,所以我在bridging_header.h
文件中有import语句.
在我的bridging_header.h
身上#import blah.h
在其中一个swift文件中,我从框架中导入了一个冗余头
@import blah // From blah.framework
我从swift文件中删除了冗余导入,似乎修复了它.
归档时间: |
|
查看次数: |
12198 次 |
最近记录: |