我正在按照教程学习,我不确定如何转换此代码以使其在没有启用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()函数使用。

10-08 06:10