Objective c 更改背景颜色时自定义NSView崩溃
我有一个自定义NSView对象,其保留属性名为bgColor。我通过定义setBgColor方法覆盖setter方法:Objective c 更改背景颜色时自定义NSView崩溃,objective-c,cocoa,nsview,Objective C,Cocoa,Nsview,我有一个自定义NSView对象,其保留属性名为bgColor。我通过定义setBgColor方法覆盖setter方法: - (void)setBgColor:(NSColor *)theColor { [bgColor autorelease]; bgColor = [theColor retain]; [self setNeedsDisplay:YES]; } 我还有另一个函数叫做isOnline: -(void)isOnline:(BOOL)connected{
- (void)setBgColor:(NSColor *)theColor
{
[bgColor autorelease];
bgColor = [theColor retain];
[self setNeedsDisplay:YES];
}
我还有另一个函数叫做isOnline:
-(void)isOnline:(BOOL)connected{
if(connected){
self.bgColor = onlineBackgroundColor;
} else {
self.bgColor = offlineBackgroundColor;
}
}
当我在initWithFrame方法中使用[self-isOnline:NO]
调用isOnline方法时,它工作得很好。但是,当我尝试使用以下命令从控制对象调用isOnline方法时:
[客户意见在线:是]
或CustomedView.isOnline=是代码>
它将在setBgColor方法的以下行崩溃:bgColor=[theColor retain]代码>编译器抱怨程序接收到信号:“EX_BAD_ACCESS”。我不明白为什么。那个自动释放错误了吗
如果是这样,我怎么能从控制对象调用[CustomedView setBgColor:aColor]代码>和initWithFrame中的self,它会正常工作吗
有什么想法吗?在颜色被销毁后,您正试图将-retain
发送到中。检查它是从哪里来的。谢谢,就这样!我在initWithEfName中声明了两个NSColor变量,但忘记了保留它们。