0

这就是我不了解一些基础知识的证明,但它仍然是OO的第一周!;)

在我的视图类中,这个对象是在 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 回答