Cocoa CGColorRef несовместимые типы указателей, передающие float [4] 'параметру типа 'const CGFloat *' (он же 'const double *')

Я получаю эту ошибку:

my color = CGColorCreate(colorSpace, fillComponents); variable: incompatible pointer types passing 'float [4]' to parameter of type 'const CGFloat *' (aka 'const double *'). 

Как мне это решить?

CGColorRef color;

//retrieve some usefull rects
NSRect frame = [self frame];
NSRect imageFrame = [self imageFrame];
NSRect relativeImageFrame = NSMakeRect(imageFrame.origin.x - frame.origin.x, imageFrame.origin.y - frame.origin.y, imageFrame.size.width, imageFrame.size.height);

/* place holder layer */
if(type == IKImageBrowserCellPlaceHolderLayer){
    //create a place holder layer
    CALayer *layer = [CALayer layer];
    layer.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);

    CALayer *placeHolderLayer = [CALayer layer];
    placeHolderLayer.frame = *(CGRect*) &relativeImageFrame;

    float fillComponents[4] = {1.0, 1.0, 1.0, 0.3};
    float strokeComponents[4] = {1.0, 1.0, 1.0, 0.9};
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    //set a background color
    color = CGColorCreate(colorSpace, fillComponents);
    [placeHolderLayer setBackgroundColor:color];
    CFRelease(color);

    //set a stroke color
    color = CGColorCreate(colorSpace, strokeComponents);
    [placeHolderLayer setBorderColor:color];
    CFRelease(color);

    [placeHolderLayer setBorderWidth:2.0];
    [placeHolderLayer setCornerRadius:0];
    CFRelease(colorSpace);

    [layer addSublayer:placeHolderLayer];

    return layer;
}

person spacecash21    schedule 03.02.2014    source источник


Ответы (1)


Если вы определяете свои компоненты заливки/обводки, как это предлагается в сообщении об ошибке, это должно работать:

const CGFloat *components = {1.0, 1.0, 1.0, 0.3};
person Volker    schedule 03.02.2014
comment
Спасибо, совсем забыл о существовании CGFloat! - person spacecash21; 04.02.2014