以下代码在手动内存管理下可以正常编译,但在 ARC 下会失败:
CALayer *layer = [CALayer layer];
layer.contents = [[UIImage imageNamed:@"dial.png"] CGImage];
错误是:
自动引用计数问题:a 的隐式转换
非 Objective-C 指针类型“CGImageRef”(又名“struct CGImage *”)
ARC 不允许使用“id”
我怎样才能让它与 ARC 一起运行?
CoreFoundation 对象不由 ARC 管理。 ARC 仅适用于 Objective-C 对象,并且在从(或向)非对象指针类型进行转换时并不隐式知道如何转移所有权。
您需要告诉 ARC 在强制转换期间如何转移对象的所有权:
layer.contents = (__bridge id) [[UIImage imageNamed:@"dial.png"] CGImage];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)