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'." 所以我假设接收器是一个不兼容的色彩空间....但我不知道这意味着什么.有任何想法吗?
你正在传递一个指向随机内存的指针(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)