1

NSImageView から派生したクラスを作成しました。ただし、クラスのコンストラクター (init) が呼び出されていないため、init は NSImageView の正しい初期化子ではないと推測しています。

NSImageView の正しい初期化子は何ですか? マニュアルを調べましたが、正しい init 関数について言及していないようです。グーグル検索でも具体的な結果は得られないようです。

可能なコンストラクターを見つけました:

-(id) initWithFrame:(NSRect)frameRect

しかし、これが正しい呼び出しかどうかはわかりません。frameRect が何であるかはよくわかりません。

NSImageView のデフォルトのイニシャライザ/コンストラクタは何ですか? 違いがある場合は、iOS アプリではなくデスクトップ アプリを開発していることに注意してください。NSImageView サブクラス オブジェクトは、プログラムではなく Interface Builder を介してウィンドウに配置されています。

4

2 に答える 2

4

から派生したクラスは、NSViewを使用してプログラムで初期化するinitWithFrameか、 を使用して NIB ファイルからロードするときに初期化できますawakeFromNib。私がしていることは、ロード方法に関係なく、初期化を実行するために共通のプライベート メソッドを呼び出すことです。

// Private methods
@interface MyViewSubclass ()

- (void)_setupView;

@end

@implementation MyViewSubclass

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self != nil)
    {
        [self _setupView];
    }
    return self;
}

- (void)awakeFromNib
{
    [self _setupView];
}

// Common initialisation (called by initWithFrame: and awakeFromNib).
- (void)_setupView
{
    // Set stuff up
}
于 2012-06-30T20:59:23.183 に答える
1

nib/xib からの場合、initWithCoder:

-(id)initWithCoder:(NSCoder *)coder
于 2012-06-30T20:56:20.067 に答える