Subclase NSView para cambiar el color de fondo

Quiero cambiar el color de fondo de una vista personalizada. Tengo una subclase NSView algo así:

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

y ellos

  @implementation CustomBGView

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

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

El método changeColor es para cambiar el color en el controlador de la aplicación. También defino un IBOutlet para la vista personalizada llamada myView enlazada en IB.

El problema es cuando uso changeColor en el controlador de la aplicación de esta manera:

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

Hay una señal de "Programa recibido:" EXC_BAD_ACCESS ". Si uso en cambio algo como esto:

[myView changeColor: [NSColor whiteColor]];

funciona bien.

¿Dónde está el problema? Gracias por adelantado

Gracias Chuck! Ahora con "retener" funciona bien.

¿Y por qué funciona sin retención en un caso ([myView changeColor: [NSColor whiteColor]];) y no en el otro ???

Respuestas a la pregunta(1)

Su respuesta a la pregunta