Agregando una subcapa CALayer dentro de UIView init

Estoy intentando agregar un CALayer como una subcapa en una subclass UIView, pero cuando agrego la subcapa dentro del método init obtengo EXC_BAD_ACCESS cuando agrego la vista a otra vista o window.

Método de Init:

 - (id)initWithTitle:(NSString *)title message:(NSString *)message { if ((self = [super init])) { self.title = title; self.message = message; self.alertLayer = [[CALayer alloc] init]; self.layer.cornerRadius = kCORNER_RADIUS; self.layer.shadowRadius = 3.0; self.layer.shadowColor = [UIColor blackColor].CGColor; self.layer.shadowOffset = CGSizeMake(15, 20); self.layer.shadowOpacity = 1.0; self.alertLayer.delegate = self; self.alertLayer.masksToBounds = YES; self.alertLayer.cornerRadius = kCORNER_RADIUS; [self.layer addSublayer:self.alertLayer]; // This line of code seems to cause EXC_BAD_ACCESS } return self; } 

EXC_BAD_ACCESS se produce después de llamar [self.view addSubview:alertView] dentro de un controller de vista o UIWindow.

Tiene dos capas ( self.layer y self.alertLayer ) que tienen el mismo self delegate, esto conduce a una recursión infinita en el método interno -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] cuando se agrega esta vista ( self ) al tree de vista. Por lo tanto, debe eliminar self.alertLayer.delegate = self; para evitar el choque. Si necesita delegar para alarmLayer puede crear un object distinto.