2012-07-22 41 views
5

我正在使用scrollview并实现委托方法。滚动视图上参数类型的分布式对象修饰符冲突

-(void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(CGPoint *)targetContentOffset{ 
    CGPoint p = *targetContentOffset; 
    int counter = [self counterForPosition:p]; 
    *targetContentOffset=[self positionForCounter:counter];; 
    //load month -2; 
    self.month=counter-2; 
} 

我收到Xcode的警告。在实施的参数类型 冲突的分布式对象修改“:withVelocity:targetContentOffset:scrollViewWillEndDragging”

我发现了一些线索,我不完全理解,并没有解决我的问题。 Singleton release method produces warning?

现在这只是一个警告,没有任何崩溃。我认为这是我个人的强迫症,我想解决这个问题。

的Tx

+1

你有没有解决这个问题?我有同样的问题。 – 2012-07-30 13:13:50

回答

4

(CGPoint *)targetContentOffset应该读(inout CGPoint *)targetContentOffset,以匹配您正在尝试执行协议的声明。看到的文档这里的协议:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html

供参考:inoutinoutbyrefbycopy,和oneway被统称为 “分布式对象修饰符”。它们有点像注释,它告诉编译器(或读者或文档系统)如何使用函数参数。在这种情况下,targetContentOffset指向使用并修改其值的CGPoint:它是inout参数。 Clang希望确保你知道这一点,所以如果你没有告诉Clang“是的,我知道这是一个inout参数”,Clang会告诉你这个警告。

+0

你是一些聪明的饼干! – Vincent 2012-09-03 00:24:56