2017-09-27 3 views
0

Swift 4の移行後、NSTreeControllerプロジェクトが起動時にクラッシュするようになりました。私は動的配列に@objcのキャストにそれを煮詰めました。なぜ誰もがクラッシュを起こし続けている理由を知っていますか?Swift 4 NSTreeController @objc動的var nodes =起動時に[Node]()がアプリケーションをクラッシュさせます

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

答えて

1

私は問題を把握しました。 4へのSwift移行を行い、必要な変数に@objcプロパティを付加していない最初のオプション(推奨)を選択したのがそのときでした。主に私のNodeクラス全体では、変数に@objcプロパティが必要でした.2番目のオプション 'Match Swift 3 Behavior'はそれを行い、デスクトップアプリケーションはクラッシュせずに実行されました。

あなたのNodeクラスについては、以下の4スウィフト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 
    } 
} 

この問題に実行している人のために、「マッチスウィフト3を使用してみてください行動オプション。

関連する問題