2013-02-24 71 views
0

這是證明我不瞭解某些基礎知識,但它仍然是OO的第一週! ;)在initWithFrame方法中創建的對象不知道同一類的另一種方法

在這個對象是在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'「。在創建對象的方法中做同樣的工作...該怎麼做?謝謝。

回答

1

問題出在變量scope.Here你聲明的變量只有大括號內的範圍或生命,因此它不適用於其他方法。

解決方案

創建一個實例變量:它可以訪問無處不在類中的變量。

在您的.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; 
} 
+0

好的,謝謝。但後來會有更多像這樣的對象,用戶生成。如何處理? – fw2601 2013-02-24 21:12:08

+0

好吧,如果不再需要創建的實例,則可以使用相同的變量或更多的變量,否則必須將數組作爲類變量並將實例添加到其中 – 2013-02-24 21:14:42

相關問題