0

これは、私がいくつかの基礎を理解していない証拠ですが、まだ OO の最初の 1 週間です! ;)

ビュー クラス内で、このオブジェクトは initWithFrame メソッドで作成されます。

- (id)initWithFrame:(NSRect)frame{
    self = [super initWithFrame:frame];
    if (self)
{
    SeqModel *seq1 = [[SeqModel alloc] init];
    [seq1 setSeqSteps:16];
    [seq1 setSeqPatterns:1];
    [seq1 setName:@"Load sample here"];
    }
    return self;
}

後で別のメソッドで呼び出されます:

- (void)drawSampleNameSeq1{
    NSLog(@"%@",[seq1 sampleName]);
    [self drawText:[seq1 sampleName] schrift:@"Helvetica Light" r:140 g:140 b:140 tsize:15     xpos:1005 ypos:755 ];
}

そして、コンパイラは次のように言います:「宣言されていない識別子 'seq1'の使用」。オブジェクトを作成するメソッドで同じことを行うと...どうすればよいですか? ありがとう。

4

1 に答える 1

1

問題は変数のスコープにあります。ここで宣言した変数は、中括弧内だけでスコープまたはライフを持​​っているため、他のメソッドでは使用できません。

解決

インスタンス変数を作成します。クラス内のどこからでもアクセスできる変数です。

あなたの.hで

@interface ClassName : SuperClass {
   SeqModel *seq1;
}

次に、initWithFrame:メソッドで

- (id)initWithFrame:(NSRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        seq1 = [[SeqModel alloc] init];
        [seq1 setSeqSteps:16];
        [seq1 setSeqPatterns:1];
        [seq1 setName:@"Load sample here"];
    }
    return self;
}
于 2013-02-24T21:00:07.713 に答える