gpt4 book ai didi

iphone - objective-c 方法支持 "pass by value"吗?

转载 作者:可可西里 更新时间:2023-11-01 04:16:55 26 4
gpt4 key购买 nike

Objective-C 方法是否支持“按值传递”?或者更具体地说:

  1. 传递给方法的参数的默认行为是按引用传递吗?
  2. 如果是,在某些情况下是否有任何变化 - 例如,如果参数只是一个基本的 int 而不是一个对象? (或者这与 objective-c 无关)
  3. 有没有一种方法支持基本变量(如 int)的按值传递?
  4. 是否有方法支持对象的按值传递? (我假设这里没有,但为了完整性会问。当然,可以在消息中自己复制,但是对于这种方法,我认为这不是 objective-c 方法提供给你的东西,而是它是自己动手)

谢谢

最佳答案

Objective-C 不支持引用,至少在 C++ 意义上不支持引用。

所有 Objective-C 对象都分配在堆上,因此所有“对象变量”实际上必须是指针 类型。是否可以将指针视为有效地等同于引用尚待商榷。例如,在谈论 C++ 时,存在明显的语义差异(否则,有什么意义...)

所以回答你的问题:

  1. 不,Objective-C 只支持按值传递。如果将对象指针传递给方法,则按值传递指针 - 您没有传递引用。
  2. 在这方面,对象和基元之间没有内在区别,除了对象总是由指针而不是值引用这一事实。如果愿意,您可以传入原始类型指针。
  3. 是的。情况总是如此。同样,如果您传入指向原语的指针,则您是按值而不是引用传递指针。
  4. 除了您传递的是指针,而不是引用之外,您在这方面的表现非常出色。

关于iphone - objective-c 方法支持 "pass by value"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com