0

他,因为我以这种方式(在我的 NSView 中)使用我的图像作为实例变量(因为我需要经常绘制它们):

@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];
}

没有错误(只有未使用图像变量的警告)。运行时,不会绘制任何图像。我在这里做错了什么?谢谢...

4

2 回答 2

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 版及更高版本中)在开头使用下划线合成您的属性(相当于@synthesize bz_BG = _bz_BG;在您的实现文件的开头放置)。因此,将您的引用_bz_BG改为

于 2013-02-26T18:16:50.327 回答
0

使用方法drawToPoint:代替dissolveToPoint呢?

于 2013-02-26T18:01:13.100 回答