1

マスター(NSOutlineView + NSTreeController)と詳細(NSOutlineView + NSTreeController)のセットアップを使用してマスター-詳細アプリケーションを実行しようとすると、問題が発生します。

これは、AppleのAbstract-Treeサンプルアプリに基づく最も単純なアプリケーションです。

https://s3.amazonaws.com/applicationtests/AbstractTree-MasterDetail.zip

基本的に、ツリーノードを使用する左側のプロジェクトブラウザと、プロジェクトブラウザの選択に依存する詳細ツリーを表示する右側の詳細ブラウザがあります。

私の設定は簡単です。

マスターNSOutlineViewは、CoreDataエンティティプロジェクトノードを渡すマスターNSTreeControllerにバインドします。詳細NSOutlineViewは、CoreDataエンティティの詳細ノードを渡すDetailNSTreeControllerにバインドします。

どちらも木です。

プロジェクトノードエンティティには詳細ノードとの関係があり、選択に応じてプロジェクトツリーに詳細ツリーを表示できます。

私が抱えている問題は、contentObject inDetailNSTreeControllerをマスターNSTreeController選択にバインドするときです。

詳細NSTreeControllercontentObjectはマスターNSTreeControllerselection.detailNodeにバインドします

マスターツリーoutlineViewで選択を変更するたびに、詳細NSTreeControllerは、割り当てが解除されることのないNSTreeControllerTreeNodesを作成します。

基本的に、マスターコントローラーの選択が変更されるたびに、詳細NSTreeContrllerは、割り当てが解除されることのない新しいNSTreeControllerTreeNodeオブジェクトの新しいセットを作成します。

Instruments Allocationツールをご覧ください。選択を変更するたびに、新しいノードが作成されます。すべてのマスターノードを削除した後でも、ノードは割り当てられたままです。

マスターコントローラーの選択を変更して新しいnibファイルをリロードするNSViewControllerを準備しようとしましたが、これは大きなオーバーヘッドのように思えます。

contentObjectバインドが別の値に変更されたときに、作成されたNSTreeControllerTreeNodesを破棄する方法を知っている人はいますか?

ありがとう。

4

0 に答える 0