删除 UIColor CGColor - KVC 警告

Posted

技术标签:

【中文标题】删除 UIColor CGColor - KVC 警告【英文标题】:Remove UIColor CGColor - KVC warning 【发布时间】:2012-11-27 11:50:14 【问题描述】:

如何去除[[UIColor grayColor] CGColor]愚蠢的警告?

[self setValue:
     [[UIColor grayColor] CGColor] 
          forKeyPath:[NSString stringWithFormat:@"_View_%@%d.layer.borderColor", 
              i>=10?@"":@"0", i]];

不兼容的指针类型发送“CGColorRef”(又名“结构 CGColor *') 到 'id' 类型的参数

谢谢。

【问题讨论】:

-1 无评论。你是个很酷的人! +1 评论:第一次搜索回答了我的问题 :-)= 【参考方案1】:

将 CGColor 转换为 id 类型:

[self setValue:
     (id)[[UIColor grayColor] CGColor] 
          forKeyPath:[NSString stringWithFormat:@"_View_%@%d.layer.borderColor", 
              i>=10?@"":@"0", i]];

【讨论】:

有效,但这很奇怪,因为如果我使用 id color = [[UIColor grayColor] CGColor]; 警告保持不变... 投它(如他所说)::问题是 CGColorRef 不是真正的 NSObject,因此不兼容(例如,与 arc。它不知道保留/释放/isEqual ...)-对于接受知道这一点的方法,这不是问题,所以上面的代码是保存【参考方案2】:

这将与上面的代码执行相同的操作。

[self setValue:
 (id)[[UIColor grayColor] CGColor] 
      forKeyPath:[NSString stringWithFormat:@"_View_%02d.layer.borderColor", i]];

【讨论】:

以上是关于删除 UIColor CGColor - KVC 警告的主要内容,如果未能解决你的问题,请参考以下文章

iOS CGColor 与 UIColor

iOS开发UIColor,CGColor,CIColor三者的区别和联系

iphone开发:UIColor/CGColor组件对比

错误sintax UIColor(CGColor:selectedButton?.layer.backgroundColor)Swift

swift 将UIColor转换成RGB(转)

iOS - 如何删除 UIButton 边框颜色?