Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone objective-c方法是否支持;传递值“;?_Iphone_Objective C_Ios_Pass By Reference_Pass By Value - Fatal编程技术网

Iphone objective-c方法是否支持;传递值“;?

Iphone objective-c方法是否支持;传递值“;?,iphone,objective-c,ios,pass-by-reference,pass-by-value,Iphone,Objective C,Ios,Pass By Reference,Pass By Value,objective-c方法是否支持“传递值”?或者更具体地说: 传递到方法中的参数的默认行为是否按引用传递 如果是,在某些情况下是否有任何变化-例如,如果参数只是一个基本int而不是一个对象?(或者这与目标c无关) 对于int这样的基本变量,是否有方法支持传递值 是否有方法支持对象的传递值?(我在这里假设没有,但是为了完整性会问。当然,你可以在消息中自己做拷贝,但是对于这种方法,我会认为这不是Objul-C方法提供给你的,也就是它自己做的)。 谢谢 不是。默认情况下它是按值传递的,就像在C中一样

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

  • 传递到方法中的参数的默认行为是否按引用传递
  • 如果是,在某些情况下是否有任何变化-例如,如果参数只是一个基本int而不是一个对象?(或者这与目标c无关)
  • 对于int这样的基本变量,是否有方法支持传递值
  • 是否有方法支持对象的传递值?(我在这里假设没有,但是为了完整性会问。当然,你可以在消息中自己做拷贝,但是对于这种方法,我会认为这不是Objul-C方法提供给你的,也就是它自己做的)
  • 。 谢谢

  • 不是。默认情况下它是按值传递的,就像在C中一样。除了对于目标C类实例引用,该值是一个引用。因此,通过引用有效地传递了目标C类实例

  • 不适用

  • 见1

  • 不是真的。您可以序列化、传递字符串并在内部重新创建。或者,您可以让对象将其IVAR存储为结构,并按值传递该结构。有些对象支持克隆


  • Objto-C不支持引用,至少不在C++意义上。 所有Objective-C对象都是在堆上分配的,因此所有“对象变量”实际上都必须是指针类型。指针是否可以被视为有效地等同于引用,这是一个值得商榷的问题。比如说C++时,有明显的语义差异(否则,什么意思……) 因此,要回答您的问题:

  • 否,Objective-C仅支持传递值。如果将对象指针传递给方法,则按值传递指针,而不是传递引用
  • 在这方面,对象和原语之间没有固有的区别,除了对象总是由指针引用,而不是由值引用。如果愿意,可以传入基本类型指针
  • 对。情况总是这样。同样,如果传入指向原语的指针,则是按值传递指针,而不是引用
  • 除了传递指针,而不是引用之外,你的这一点非常准确

  • -1指针模拟引用,但它不是。公认的定义是,当方法代码接收到对变量的引用(而不是副本)时,通过引用传递用作方法参数的变量。这描述的是实施,而不是有效的结果。Objective-C只传递值,不管是指针还是其他任何东西。即使在使用
    &p
    (例如:N错误模式)时,您也在通过内存访问进行更改,而不是使用变量引用。C指针与C++不一样,C++有什么用?目标C在C++的意义上没有引用数据类型。我从你的回答中看出你已经明白了这一切。我只是为了访问此页面的人的利益而对-1进行了评论和投票,因为在按值传递/引用讨论的上下文中,调用指针引用不是合适的术语。