Enmascarando un CALayer con otro CALayer

Estoy tratando de hacer una forma de rosquilla con CALayers. Un CALayer será un círculo grande, el otro será un círculo más pequeño colocado en su centro, enmascarándolo.

El círculo grande se muestra bien, pero cuando llamocircle.mask = circleMask; entonces la vista aparece vacía.

Aquí está mi código:

AriDonut.h

#import <UIKit/UIKit.h>

@interface AriDonut : UIView
-(id)initWithRadius:(float)radius;
@end

AriDonut.m

#import "AriDonut.h"
#import <QuartzCore/QuartzCore.h>

@implementation AriDonut

-(id)initWithRadius:(float)radius{
    self = [super initWithFrame:CGRectMake(0, 0, radius, radius)];
    if(self){

        //LARGE CIRCLE
        CALayer *circle = [CALayer layer];
        circle.bounds = CGRectMake(0, 0, radius, radius);
        circle.backgroundColor = [UIColor redColor].CGColor;
        circle.cornerRadius = radius/2;
        circle.position = CGPointMake(radius/2, radius/2);

        //SMALL CIRLCE
        CALayer *circleMask = [CALayer layer];
        circleMask.bounds = CGRectMake(0, 0, 10, 10);
        circleMask.cornerRadius = radius/2;
        circleMask.position = circle.position;

        //circle.mask = circleMask;

        [self.layer addSublayer:circle];

    }

    return self;
}

He intentado configurar el superlayer nil del gran círculo de esta manera:

CALayer *theSuper = circle.superlayer;
theSuper = nil;

Pero no hizo una diferencia.

También traté de establecer el círculo demasksToBounds propiedad a SÍ y NO, pero no hizo una diferencia.

¿Alguna idea?

Respuestas a la pregunta(4)

Su respuesta a la pregunta