我还在习惯 ARC 和桥牌。我在有关 CGColor 的文档中看到了这一点
编译器处理从 Cocoa 方法返回的 CF 对象 编译器理解返回核心基础类型的 Objective-C 方法遵循历史 Cocoa 命名约定(请参阅高级内存管理编程指南)。例如,编译器知道,在 iOS 中,由 UIColor 的 CGColor 方法返回的 CGColor 是不拥有的。您仍然必须使用适当的类型转换,如下例所示:
NSMutableArray *colors = [NSMutableArray arrayWithObject:(id)[[UIColor darkGrayColor] CGColor]];
[colors addObject:(id)[[UIColor lightGrayColor] CGColor]];
所以在我的代码中,我尝试了这个:
gradientLayer.backgroundColor = (id)([UIColor clearColor].CGColor));
我收到了关于 ARC 的编译器警告,需要使用桥接转换。我还是不明白为什么。当我点击“Fix-It”时,它给了我这个:
gradientLayer.backgroundColor = (__bridge CGColorRef)((__bridge id)([UIColor clearColor].CGColor));
我不明白。这是什么意思?谢谢!