[UIColor getWhite:alpha:]的问题

mrh*_*h89 0 pointers uicolor ios

我试图通过以下方式使用获取UIColor的白色值(例如redColor):

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

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

但这总是打印"没有",我不明白为什么.UIColor.h的定义是"如果接收器具有兼容的颜色空间,则填充任何非NULL参数并返回'YES'.否则,参数保持不变并返回'NO'." 所以我假设接收器是一个不兼容的色彩空间....但我不知道这意味着什么.有任何想法吗?

jba*_*100 5

你正在传递一个指向随机内存的指针(CGFloat*white;)

您应该创建一个静态CGFloat并传递对它的引用

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

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

它可能无法从灰度转换,您可以通过尝试来检查

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

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