我想更改自定义视图的背景颜色。我有一个子类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]];)而不是在另一种情况下???
答案 0 :(得分:3)
您将参数存储到实例变量中的changeColor:
,但不保留它,因此您不拥有它,并认为它可以消失。