2013-02-26 40 views
0

他,因爲我用我的圖片爲實例變量(因爲我需要經常吸引他們全部)以這種方式(在我的NSView):實例變量NSImage中未畫出

@implementation BeatView 
- (id)initWithFrame:(NSRect)frame{ 
self = [super initWithFrame:frame]; 
if (self) { 
    bpm=160; 
    mbpm=0; 
    NSImage *bz_BG = [NSImage imageNamed:@"mw_bg01.png"]; 
    NSImage *bz_PaAc = [NSImage imageNamed:@"pattactive.png"]; 
    NSImage *bz_PaIa = [NSImage imageNamed:@"pattinactive.png"]; 
} 
return self; 
} 

,然後得出:

- (void)drawRect:(NSRect)dirtyRect{ 
    NSPoint imagePos = NSMakePoint(0, 0); 
    [bz_BG dissolveToPoint:imagePos fraction:1.0]; 
} 

沒有錯誤(只警告不使用的圖像變量)。運行時,不會繪製圖像。我在這裏做錯了什麼?謝謝...

回答

2

您沒有初始化您的實例變量。您在init方法中創建新變量,因此發出警告。

更改您的代碼爲以下

_bz_BG = [NSImage imageNamed:@"mw_bg01.png"]; 
_bz_PaAc = [NSImage imageNamed:@"pattactive.png"]; 
_bz_PaIa = [NSImage imageNamed:@"pattinactive.png"]; 

而在你的頭文件,聲明這些變量作爲

@property (nonatomic, retain) NSImage *bz_BG; 
@property (nonatomic, retain) NSImage *bz_PaAc; 
@property (nonatomic, retain) NSImage *bz_PaIa; 

默認的XCode(4及更高版本我相信)與synthesises你的屬性一開始就有一個下劃線(相當於將@synthesize bz_BG = _bz_BG;置於實施文件的開頭)。因此請將您的參考號更改爲_bz_BG而不是

+1

很酷,謝謝! – fw2601 2013-02-26 18:21:34

0

如何使用方法drawToPoint:而不是dissolveToPoint

+0

找不到此方法。 – fw2601 2013-02-26 18:12:25