[英]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.