in in CGPoint *是什么意思?

时间:2013-09-17 17:41:06

标签: ios objective-c uiscrollview uiscrollviewdelegate

在UIScrollView委托方法中,有:

scrollViewWillEndDragging:withVelocity:targetContentOffset:

,最后一个参数是:

(inout CGPoint *)targetContentOffset

我很好奇inout意味着什么以及为什么CGPoint是指针。我尝试将targetContentOffset打印到控制台,但我也不确定如何这样做。任何帮助表示赞赏!

1 个答案:

答案 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并非绝对必需,但它有助于编译器理解代码的含义,并在优化时做得更好。

还有单独的inout声明,但据我所知,当您滥用它们时没有编译器警告,而且Apple似乎不再使用它们。