4

以下代码中引发了警告。使用 ARC。

if ( aAnim ) {
    [UIView beginAnimations:nil context:CFBridgingRetain([NSNumber numberWithInt:aOff])];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(postSpin:finished:toCCWCellOffset:)];
}
4

1 回答 1

9

CFBridgingRetain返回一个CFTypeRef声明为const void *.

context参数[UIView beginAnimations:context:]是 a void *(没有const),因此是警告。

您可以改用以下方法来修复该警告__bridge_retained

[UIView beginAnimations:nil context:(__bridge_retained void *)[NSNumber numberWithInt:aOff]];

请注意,您必须retain通过在不再使用上下文时释放上下文来平衡这一点。例如,这可以在“停止选择器”中通过将所有权转移回 Objective-C 对象来完成:

id obj = (__bridge_transfer id)context;
于 2013-06-11T09:01:43.950 回答