在UIScrollView委托方法中,有:
scrollViewWillEndDragging:withVelocity:targetContentOffset:
,最后一个参数是:
(inout CGPoint *)targetContentOffset
我很好奇inout意味着什么以及为什么CGPoint是指针。我尝试将targetContentOffset打印到控制台,但我也不确定如何这样做。任何帮助表示赞赏!
答案 0 :(得分:23)
这意味着该参数用于发送数据in
,但也用于获取数据out
。
让我们看一个示例实现:
- (void)increment:(inout NSUInteger*)number {
*number = *number + 1;
}
NSUInteger someNumber = 10;
[self increment:&someNumber];
NSLog(@"Number: %u", someNumber); //prints 11
此模式通常与C结构一起使用,例如CGPoint
,因为它们是按值传递的(复制)。
另请注意,inout
并非绝对必需,但它有助于编译器理解代码的含义,并在优化时做得更好。
还有单独的in
和out
声明,但据我所知,当您滥用它们时没有编译器警告,而且Apple似乎不再使用它们。