簡體   English   中英

Swift 4 NSTreeController @objc動態var節點= [Node]()在啟動時使應用程序崩潰

[英]Swift 4 NSTreeController @objc dynamic var nodes = [Node]() crashes app on start

在Swift 4遷移之后,我的NSTreeController項目現在在啟動時崩潰。 我將其歸結為將@objc轉換為動態數組。 有誰知道為什么它繼續導致崩潰?

@objc dynamic var nodes =[Node]() // The @objc is causing the crash

我解決了這個問題。 這是當我將Swift遷移到4並選擇第一個選項(推薦)時,該選項未將@objc屬性附加到需要它的變量上。 主要是我的整個Node類都需要變量的@objc屬性,第二個選項“ Match Swift 3 Behavior”確實做到了,並且我的桌面應用程序運行時沒有崩潰。

以下是您的Node類從Swift 3正確轉換為4的示例:

class Node: NSObject, TreeNode {
    @objc var name1: String
    @objc var name2: String
    @objc var name3: String?

    @objc var children: [Node] = []

    @objc init(name1: String, name2: String, name3: String) {
        self.name1 = name1
        self.name2 = name2
        self.name3 = name3
    }

    @objc func addChild(node: Node) {
       // add child function
    }

    @objc func findChild(node: Node) -> Node? {
       // find child function
    }
}

因此,對於遇到此問題的任何人,當您轉換為Swift 4時,請嘗試使用“匹配Swift 3行為”選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM