EXC_BAD_ACCES рисование тени

Я пытаюсь добавить тень к своему UIView, но в моем методе drawRect я получаю EXC_BAD_ACCESS. (Я использую ARC)

-(void) drawRect:(CGRect)rect {

    CGColorRef lightColor =  [UIColor colorWithRed:105.0f/255.0f green:179.0f/255.0f blue:216.0f/255.0f alpha:0.8].CGColor;

    CGColorRef shadowColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.4].CGColor;   

    CGContextRef context = UIGraphicsGetCurrentContext();
    // Draw shadow
    CGContextSaveGState(context);
    CGContextSetShadowWithColor(context, CGSizeMake(-5, 0), 10, shadowColor);
    CGContextSetFillColorWithColor(context, lightColor);
    CGContextFillRect(context, _coloredBoxRect);
    CGContextRestoreGState(context);
}

Сообщение об ошибке: Поток 1: Программа получила сигнал: «EXC_BAD_ACCESS».

Линия: CGContextSetFillColorWithColor(context, lightColor);

Когда я изменяю эту строку на:

[[UIColor colorWithRed:105.0f/255.0f green:179.0f/255.0f blue:216.0f/255.0f alpha:0.8] setFill];

Я получаю ту же ошибку, но в этой строке:

CGContextSetShadowWithColor(context, CGSizeMake(-5, 0), 10, shadowColor);

Обновить Я наконец решил проблему, изменив:

CGColorRef shadowColor = [UIColor colorWithRed: 0,2 зеленый: 0,2 синий: 0,2 альфа: 0,4] .CGColor;

в

поплавковые компоненты [4] = {0, 0, 0, 1.0 / 3.0}; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB (); CGColorRef shadowColor = CGColorCreate (colorSpace, компоненты);

Возможный (рабочий) код:

-(void) drawRect:(CGRect)rect 
{
    float components[4] = {0, 0, 0, 1.0/3.0};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGColorRef shadowColor = CGColorCreate( colorSpace, components);

    CGContextRef context = UIGraphicsGetCurrentContext();

    // Draw shadow
    CGContextSaveGState(context);
    CGContextSetShadowWithColor(context, CGSizeMake(-5, 0), 10, shadowColor);
    CGContextSetFillColorWithColor(context, lightColor);

    [[UIColor colorWithRed:105.0f/255.0f green:179.0f/255.0f blue:216.0f/255.0f alpha:0.8] setFill];

    CGContextRestoreGState(context);
}

Ответы на вопрос(4)

Ваш ответ на вопрос