我正在使用一个滚动视图,并实现一个委托方法。
-(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的警告。在实现"scrollViewWillEndDragg:withVelocity:targetContentOffset:"时,参数类型上的分布式对象修饰符发生冲突
我发现了一些我不完全理解的暗示,也不能解决我的问题。Singleton释放方法产生警告?
现在这只是一个警告,没有任何崩溃。我想这是我个人的强迫症,我想解决这个问题。
Tx
(CGPoint *)targetContentOffset
应该读取(inout CGPoint *)targetContentOffset
,以匹配您试图实现的协议中的声明。请参阅此处的协议文档:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html
仅供参考:in
、out
、inout
、byref
、bycopy
和oneway
统称为"分布式对象修饰符"。它们有点像注释,告诉编译器(或读者,或文档系统)如何使用函数参数。在这种情况下,targetContentOffset
指向一个CGPoint,该CGPoint的值被使用,然后被修改:它既是in
参数,也是out
参数。Clang想确保你知道这一点,所以如果你没有告诉Clang"是的,我知道这是inout
参数",Clang会向你显示警告。