Ios inout CGPoint*作为参数意味着什么?

Ios inout CGPoint*作为参数意味着什么?,ios,objective-c,uiscrollview,uiscrollviewdelegate,Ios,Objective C,Uiscrollview,Uiscrollviewdelegate,在UIScrollView委托方法中,有: ScrollViewWillendDraging:withVelocity:targetContentOffset: 最后一个参数是: (inout CGPoint*)targetContentOffset 我很好奇inout是什么意思,为什么CGPoint是指针。我尝试将targetContentOffset打印到控制台,但我也不确定如何执行。感谢您的帮助 这意味着该参数用于在中发送数据,但也用于在中获取数据 让我们看一个示例实现: - (void)

在UIScrollView委托方法中,有:

ScrollViewWillendDraging:withVelocity:targetContentOffset:

最后一个参数是:

(inout CGPoint*)targetContentOffset


我很好奇inout是什么意思,为什么CGPoint是指针。我尝试将targetContentOffset打印到控制台,但我也不确定如何执行。感谢您的帮助

这意味着该参数用于在中发送数据,但也用于在中获取数据

让我们看一个示例实现:

- (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
注释,但据我所知,当您误用它们时没有编译器警告,而且苹果似乎不再使用它们了。

对于打印,使用
*targetContentOffset
获取它指向的东西,或者
targetContentOffset->x
->
而不是
)通过指针访问结构的成员;我相信有人会给出一个确切的答案来解释原因。你知道在哪里记录了in/out/inout等吗?它们仍然存在于预处理的输出中,所以它必须是编译器关键字而不是宏,但我找不到正式的参考。@MartinR我也不知道。它们都是可能仅用于分布式对象,请参见