我正在使用故事板进行OSX开发。我正在使用NSTableView,并且此表视图的行使用了不同的NSTableRowViews。这是逻辑-

    func getRowView(#forIndex:Int) -> NSTableRowView?{
    if forIndex == lastSelectedRow{
        var storyboard = NSStoryboard(name: "Settings", bundle: nil)
        var accountController = storyboard?.instantiateControllerWithIdentifier("account") as! CMMAccountViewController
        accountController.accountData = listOfAccounts[forIndex]
        var rowView = accountController.view as! CMMAccountView
        return rowView
    }
    else{
        var rowView = tableView.makeViewWithIdentifier("accountSeetingsRow", owner: self) as! CMMAccountRowView
        rowView.titleLable.stringValue = listOfAccounts[forIndex].nickname!
        rowView.captionLable.stringValue = listOfAccounts[forIndex].accountDisplayName!
        return rowView
    }
}


问题:我在视图中有一个按钮,其视图控制器在第-行处实例化-

  var accountController = storyboard?.instantiateControllerWithIdentifier("account") as! CMMAccountViewController


而且我已经CTRl从CMMAccountViewController中的该按钮拖动了一个动作,但是每当我单击该按钮时,应用程序就会因EXE_BAD_ACCESS而崩溃。
为什么会这样呢?我应该如何在NSTableRowView中使用该按钮?

最佳答案

问题解决了。问题是accountController是局部变量,使用视图后就将其释放。我必须保持该参考资料有效,以避免重新分配该参考资料。

10-08 11:49