我正在按照教程学习,我不确定如何转换此代码以使其在没有启用ARC的错误的情况下免费运行。
- (void)setHourHandImage:(CGImageRef)image
{
if (image == NULL) {
hourHand.backgroundColor = [UIColor blackColor].CGColor;
hourHand.cornerRadius = 3;
}else{
hourHand.backgroundColor = [UIColor clearColor].CGColor;
hourHand.cornerRadius = 0.0;
}
hourHand.contents = (id)image;
给我一个错误的唯一部分是(id)image;
也
w = CGImageGetWidth((CGImageRef)hourHand.contents);
(CGImageRef)minHand.contents);给我一个错误
谢谢
最佳答案
您需要一个__bridge
强制转换。
hourHand.contents = (__bridge id)image;
和
w = CGImageGetWidth((__bridge CGImageRef)hourHand.contents);
__bridge
强制转换告诉ARC,此强制转换不会以任何方式影响对象的所有权。替代项是__bridge_retained
和__bridge_transfer
,它们通常通过CFBridgingRetain()
和CFBridgingRelease()
函数使用。