将CFTypeRef(aka const void *)发送到'void *'类型的参数会丢弃限定符

时间:2013-06-11 07:10:04

标签: iphone objective-c ios6

以下代码中出现警告。使用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:)];
}

1 个答案:

答案 0 :(得分:9)

CFBridgingRetain返回CFTypeRef,声明为const void *

context的{​​{1}}参数是[UIView beginAnimations:context:](没有 void *),因此警告。

您可以使用const来修复该警告:

__bridge_retained

请注意,必须通过释放不再存在的上下文来平衡[UIView beginAnimations:nil context:(__bridge_retained void *)[NSNumber numberWithInt:aOff]]; 用过的。这可以例如通过转移所有权在“停止选择器”中完成 回到Objective-C对象:

retain