带有NSBundle的Segfault 11(forClass :)和多种类型约束(协议+类)

时间:2015-05-18 13:39:58

标签: class swift compilation

以下代码在模拟器中正常运行,但在创建存档时会抛出“命令失败信号:分段错误:11 ”。

func popAction() {
  MyViewController.pop(self)
}

class func pop<T where T : MyActionDelegate, T : UIViewController>(controller: T) {
   let bundle = NSBundle(forClass: controller.dynamicType)
   // …
}

以下编辑很好:

let bundle = NSBundle(forClass: object_getClass(self))
// or
let bundle = NSBundle(forClass: self)

dynamicType似乎与类型组合(协议和类)有关。

我认为这在调试模式下工作而不是在发布模式下工作的原因在于编译期间执行的优化。

任何人都可以告诉我更多关于它为什么会在一个案例而不是另一个案件中起作用的事情吗?

由于

1 个答案:

答案 0 :(得分:1)

即使启用了优化,这对我也有用:

a Cymbals b Drums,..
a Cymbals b Cello,..
a Cymbals b Cymbals,..
a Drums b Cello,..
a Drums b Cymbals,..
a Cello b Cymbals