子类NSView更改背景颜色

时间:2010-09-23 18:16:00

标签: cocoa

我想更改自定义视图的背景颜色。我有一个子类NSView类似的东西:

#import <Cocoa/Cocoa.h>
@interface CustomBGView : NSView {
NSColor myColor; 
} @end

和.m

  @implementation CustomBGView

  - (void)drawRect:(NSRect)rect
  {
    [myColor set];
    NSRectFill([self bounds]);
  }

  - (void)changeColor:(NSColor*) aColor
 {
    myColor = aColor;
 }

changeColor方法用于在app控制器中更改颜色。我还为自定义视图定义了一个IBOutlet,名为myView binded in IB。

问题是当我在app控制器中使用changeColor时:

[myView changeColor: [NSColor colorWithCalibratedRed:0.5 green:0.5 blue:0.5 alpha:1.0]];

有一个'程序接收信号:“EXC_BAD_ACCESS”。如果我使用这样的东西:

[myView changeColor: [NSColor whiteColor]];

工作正常。

问题出在哪里?提前致谢


谢谢查克!现在用“保留”工作正常。

为什么它在没有保留的情况下工作([myView changeColor:[NSColor whiteColor]];)而不是在另一种情况下???

1 个答案:

答案 0 :(得分:3)

您将参数存储到实例变量中的changeColor:,但不保留它,因此您不拥有它,并认为它可以消失。