Проблема с [UIColor getWhite:alpha:]

Я пытаюсь использовать для получения белого значения UIColor следующее (например, redColor):

UIColor *col = [UIColor redColor];
CGFloat *white;

if([col getWhite:white alpha:nil])
{
    NSLog(@"worked");
}
else
{
    NSLog(@"didn't");
}

Но это всегда печатает «не», и я не понимаю, почему. В определении UIColor.h говорится: «Если приемник имеет совместимое цветовое пространство, все параметры, отличные от NULL, заполняются и возвращается «ДА». В противном случае параметры остаются без изменений и возвращается «НЕТ». поэтому я предполагаю, что приемник имеет несовместимое цветовое пространство.... Но я не знаю, что это значит. Любые идеи?


person mrh89    schedule 11.11.2011    source источник


Ответы (1)


Вы передаете указатель на случайный участок памяти (CGFloat *white;)

Вы должны создать статический CGFloat и передать ссылку на него

UIColor *col = [UIColor redColor];
CGFloat white;

if([col getWhite:&white alpha:nil])
{
    NSLog(@"worked");
}
else
{
    NSLog(@"didn't");
}

Вполне возможно, что он не сможет конвертировать из оттенков серого, вы можете проверить, попробовав

UIColor *col = [UIColor colorWithWhite:1.0 alpha:1.0];
CGFloat white;

if([col getWhite:&white alpha:nil])
{
    NSLog(@"worked");
}
else
{
    NSLog(@"didn't");
}
person jbat100    schedule 11.11.2011
comment
Спасибо за это, я понял на выходных, что я делал, но не было возможности исправить себя... - person mrh89; 14.11.2011