以下代码可以通过手动内存管理进行编译,但在ARC下失败:
CALayer *layer = [CALayer layer];
layer.contents = [[UIImage imageNamed:@"dial.png"] CGImage];
错误是:
自动引用计数问题:a的隐式转换 非Objective-C指针类型'CGImageRef'(又名'struct CGImage *')来 ARC不允许使用'id'
如何使用ARC运行?
答案 0 :(得分:18)
CoreFoundation对象不由ARC管理。 ARC仅适用于Objective-C对象,并且在从非对象指针类型转换(或转换)时不会隐式知道如何转移所有权。
您需要告诉ARC如何在演员阵容期间转移对象的所有权:
layer.contents = (__bridge id) [[UIImage imageNamed:@"dial.png"] CGImage];
答案 1 :(得分:1)
只是将-CGImage
的结果转换为id,因为它抱怨隐式转换......
layer.contents = (id) [[UIImage imageNamed:@"dial.png"] CGImage];