2

私は、高調波や液体充填シェルの他の特性をモデリングするための社内プログラムの開発者です。現在、プログラム全体では、計算で一度に使用される物理的特性(温度、圧力など)が1セットしかないと仮定しています。私はすでにすべての計算を球体モデルに分割しました。私は球を所有するコントローラを持っています。ユーザーが物理的なプロパティを変更すると、コントローラは球を持っていて、すべてを再計算し、球計算の結果を表示しているすべてのウィンドウを更新します。私の新しいコントローラのスーパークラスは何でしょうか?

誰かが、温度と圧力の範囲で特定の高調波の周波数を表示するテーブルを作成するように依頼しました。これは、他のすべてのウィンドウとは独立している必要があるため、独自の球モデルを持つ新しいコントローラが必要になると思います。

私の新しいコントローラはNSWindowControllerサブクラスですか、それともコントローラ内の値にテキストフィールドがバインドされているNSWindowのプロパティを持つNSObjectサブクラスであるべきですか(まったく異なるもの)?私は同社の唯一の開発者です。私はこのプログラムを過去4年間に書いたので、自分でココアを学んだので、常にベストプラクティスに従ったかどうかはわかりません。私は新しい重要な機能を導入しようとしているので、私はそれを正しくやっていることを確認したいと思います。

この問題はわかりませんが、解決策はまだ組織にG5マシンがいくつかあるため、OS X 10.5で実行する必要があります。

答えて

2

特定のウィンドウを制御するコントローラを使用している場合は、NSWindowControllerがより複雑なnibローディングとメモリ管理の問題の一部を処理するだけなので、NSWindowControllerサブクラスを使用する必要があります。

新しいウィンドウのSphereモデルに、メインコントローラのものとは異なるデータセットが表示されない限り、新しいコントローラ用の新しいモデルを作成する必要はありません。あなたは、メインコントローラ内の球インスタンスを参照することができます。このような

何か:

.H:

#import <Cocoa/Cocoa.h> 

@class Sphere; 

@interface FrequenciesController : NSWindowController 
{ 
    Sphere* sphere; 
} 
- (id)initWithSphere:(Sphere*)aSphere; 
@end 

.M:

#import "FrequenciesController.h" 
#import "Sphere.h" 

@implementation FrequenciesController 
- (id)initWithSphere:(Sphere*)aSphere 
{ 
    self = [super initWithWindowNibName:@"NameOfYourNib"]; 
    if (self) 
    { 
     sphere = [aSphere retain]; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [sphere release]; 
    [super dealloc]; 
} 
@end 

ウィンドウを作成するには、その後、自分のメインコントローラでこのような何かをしなければなりませんあなたがfrequenciesControllerをivarとして宣言したと仮定すると、

- (IBAction)showFrequenciesWindow:(id)sender 
{ 
    if(!frequenciesController) 
    { 
     frequenciesController = [[FrequenciesController alloc] initWithSphere:self.sphere]; 
     [frequenciesController showWindow:self]; 
    } 
} 
+0

新しいウィンドウ内の球には、他のすべてのウィンドウとは異なるデータセットが表示されているため、独自の球モデルが必要です。私はNSWindowControllerサブクラスの使用についての情報を感謝します。 – SSteve

+0

一般に、ウィンドウを管理している場合は、NSWindowControllerを使用する必要があります。このウィンドウに表示されているモデルのモデルコントローラとしても、ウィンドウコントローラを使用するのが理にかなっています。 –

関連する問題