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