2017-05-31 75 views
0

以下是我正在尝试为我的应用程序创建功能的原型的viewDidAppear()方法。 graphicsView实例变量通过故事板绑定到我编写的NSView子类的实例,该实例又被包含在NSSplitView中的NSScrollView中。此代码位于该视图的视图控制器内。SnapKit中的错误错误

override func viewWillAppear() { 
     super.viewWillAppear() 

     let red = CGColor.init(red: 1, green: 0, blue: 0, alpha: 1) 
     self.view.layer?.backgroundColor = red 

     let box = NSTextView() 
     self.graphicsView.addSubview(box) 
     box.snp.makeConstraints { (make) -> Void in 
      make.edges.equalTo(self.graphicsView).inset(NSEdgeInsetsMake(100, 100, self.graphicsView.bounds.height - 200, self.graphicsView.bounds.width - 300)) 
     } 
     box.textStorage?.append(NSAttributedString(string: "Hello Sailor")) 
     box.alignCenter(self) 
    } 

在执行时,出现错误与后行闭合用于约束的关闭托架通常EXC_BAD_INSTRUCTION故障沿。

就我所见,NSTextView将被box强烈保留,所以我不知道错误的来源。该错误出现在ConstraintItem.init(target: AnyObject?, attributes: ConstraintAttributes)的第一行。根据我在这里发布的自述文件中的说明; SnapKit团队中的某个人是否可以对错误进行补充说明? (如果删除box - 相关码应用程式正常工作。)

加信息:

该异常发生在ConstraintItem.swift,这是self.target = target的37行。我在该行之前设置了一个断点,并在调试器中执行了e目标;这是我得到的:

(lldb) e target 
(AnyObject?) $R1 = (instance_type = 0x0000608000164c80) { 
    instance_type = 0x0000608000164c80 { 
    AppKit.NSTextView = { 
     [email protected] = <extracting data from value failed> 

    } 
    title = "some random text" 
    minimumWidth = 100 
    } 
} 
+0

我在原始帖子的异常点添加了相关的调试器输出。 – Feldur

回答

0

我发现了几个答案。

  1. 如何搜索Google仍然很重要。我更改了一些搜索,并在SO上找到this,其简短版本就是说它不能形成专门针对NSTextView的弱引用,并且包含解释性Clang文档的链接。

  2. 也许更有趣的是,我还发现了我在标题中提到的“不稳定”错误的答案 - 我开发的一台机器其中有一台Swift 3.1,但另一台有3.0.2。更新的版本不会显示形成薄弱环节的错误,这表明Apple已经升级了NSTextView实现。