【发布时间】:2013-10-11 16:55:26
【问题描述】:
在 Objective-C 中,我看到了将对象传递给函数的两种常见模式。基本上所有对象到函数都是通过引用传递的,如下所示:
-(void) someFunc:(UIImage*)image;这是通过引用传递的,不是吗?
但是这是什么:
-(void) someFunc2:(UIImage**)image??它也通过引用传递吗?还是通过指针传递指针?或者是什么?我不明白实际的区别是什么(但我经常看到这段代码)。主要问题是:为什么我们需要这个指向指针传递的指针:-(void) someFunc2:(UIImage**)image?谢谢。
【问题讨论】:
-
所有对象参数都是通过引用传递的,因为它们是指针。
-
@Aaron 其实对象指针参数都是传值的。
-
好的。那么在这种情况下,价值/参考之间有什么区别?无论哪种方式,对象指针都指向正在传递的对象,因此可以由接收它的函数更改。这不准确吗?
-
rmaddy 表示 POINTER 本身是按值传递的。真正的“通过引用传递”在objective-c中不存在
-
在实践中,通过值传递指向对象的指针,和在 C# 中通过引用传递对象在功能上是等效的。
标签: ios objective-c parameter-passing