Xib加载在包含NSSCrollView时崩溃

时间:2017-11-09 09:27:28

标签: swift macos crash xib

我注意到我的应用程序崩溃,如果我:

  • 为NSWindow使用自定义Swift类
  • 在窗口上添加NSScrollView
  • 运行一个特定的目标(我在这个项目中还有2个,并且它们在相同条件下都能正常工作)

enter image description here

调用它的代码如下:

guard let alertWindow = alert.window else {//It crashes here
    //other code
    return false
}

类实现为空。它只是NSWindow的子类(如果我使用NSWindow,一切都还可以)

class CustomAlertWindow: NSWindow {

}

使用空的Objective-C子类

可以正常工作
@interface CustomAlertWindow: NSWindow

@end

@implementation CustomAlertWindow

@end

有人遇到这种崩溃。看起来它试图订阅NSScrollView事件。有些人为什么失败了。我的目标可能有问题,或者它可能只是一个Cocoa / XCode /等。 BUG ...

我目前无法在空白项目中重现它,但我会继续尝试。

当我重载 addObserver 方法时,我发现keyPath是" contentLayoutRect "

override func addObserver(_ observer: NSObject, forKeyPath keyPath: String, options: NSKeyValueObservingOptions = [], context: UnsafeMutableRawPointer?) {
    super.addObserver(observer, forKeyPath: keyPath, options: options, context: context)
}

两者都是一样的:

  • Swift 3
  • XCode版本8.3.3(8E3004b)
  • macOS:10.12.5(16F73)

  • Swift 3.2
  • Xcode版本9.0(9A235)
  • macOS:10.13(17A365)

P.S。 无论如何,感谢关注。

1 个答案:

答案 0 :(得分:0)

所有问题都与Sparkle.framework相关联。

我刚刚更新了它。我们遇到了bug讨论中描述的所有问题。

希望没有人面临类似的问题=)

我们有Sparkle版本1.8.0。我很惭愧=(