Проблема с [UIColor getWhite: alpha:] - PullRequest
0 голосов
/ 11 ноября 2011

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

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

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

Но это всегда печатает "не сделал", и я не понимаю, почему. Определение UIColor.h гласит: «Если получатель имеет совместимое цветовое пространство, любые ненулевые параметры заполняются и возвращается« YES ». В противном случае параметры остаются без изменений, а« NO »возвращается». поэтому я предполагаю, что приемник имеет несовместимое цветовое пространство .... Но я не знаю, что это значит. Есть идеи?

1 Ответ

5 голосов
/ 11 ноября 2011

Вы передаете указатель на случайный кусок памяти (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");
}
...