Objective-C 方法是否支持“按值传递”?或者更具体地说:
- 传递给方法的参数的默认行为是按引用传递吗?
- 如果是,在某些情况下是否有任何变化 - 例如,如果参数只是一个基本的 int 而不是一个对象? (或者这与 objective-c 无关)
- 有没有一种方法支持基本变量(如 int)的按值传递?
- 是否有方法支持对象的按值传递? (我假设这里没有,但为了完整性会问。当然,可以在消息中自己复制,但是对于这种方法,我认为这不是 objective-c 方法提供给你的东西,而是它是自己动手)
谢谢
最佳答案
Objective-C 不支持引用,至少在 C++ 意义上不支持引用。
所有 Objective-C 对象都分配在堆上,因此所有“对象变量”实际上必须是指针 类型。是否可以将指针视为有效地等同于引用尚待商榷。例如,在谈论 C++ 时,存在明显的语义差异(否则,有什么意义...)
所以回答你的问题:
- 不,Objective-C 只支持按值传递。如果将对象指针传递给方法,则按值传递指针 - 您没有传递引用。
- 在这方面,对象和基元之间没有内在区别,除了对象总是由指针而不是值引用这一事实。如果愿意,您可以传入原始类型指针。
- 是的。情况总是如此。同样,如果您传入指向原语的指针,则您是按值而不是引用传递指针。
- 除了您传递的是指针,而不是引用之外,您在这方面的表现非常出色。
关于iphone - objective-c 方法支持 "pass by value"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251687/