7

在 UIScrollView 委托方法中,有:

scrollViewWillEndDragging:withVelocity:targetContentOffset:

最后一个参数是:

(inout CGPoint *)targetContentOffset

我很好奇 inout 的含义以及为什么 CGPoint 是指针。我尝试将 targetContentOffset 打印到控制台,但我也不知道该怎么做。任何帮助表示赞赏!

4

1 回答 1

24

这意味着该参数用于发送数据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注释,但据我所知,当你滥用它们时没有编译器警告,而且苹果似乎不再使用它们了。

于 2013-09-17T17:44:07.973 回答