Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective-C中的对象是如何传递和返回的?_Objective C_Parsing - Fatal编程技术网

Objective-C中的对象是如何传递和返回的?

Objective-C中的对象是如何传递和返回的?,objective-c,parsing,Objective C,Parsing,在Java中,我可以使用(ObjectA)objB轻松地传递数据。我如何在目标C中做类似的事情?还有,为什么Objective C不能返回对象,而只能返回id?我确实-(MyObj)返回myobject{},但是Xcode警告我不能使用MyObj,但是我可以返回id-(id)returnMyObject{}。Java和Apple的Objective C对象的底层模型实际上是相同的,它们都在堆上有所有对象,并且通过指针访问 区别在于Java中的指针是隐藏的,因此(ObjectA)objB是指向Ob

在Java中,我可以使用(ObjectA)objB轻松地传递数据。我如何在目标C中做类似的事情?还有,为什么Objective C不能返回对象,而只能返回id?我确实-(MyObj)返回myobject{},但是Xcode警告我不能使用MyObj,但是我可以返回id-(id)returnMyObject{}。

Java和Apple的Objective C对象的底层模型实际上是相同的,它们都在堆上有所有对象,并且通过指针访问

区别在于Java中的指针是隐藏的,因此(ObjectA)objB是指向ObjectA类型数据的指针。在目标C中,指针是显式的,您需要说(MyObj*)returnMyObject{}


id是指向一个对象的指针(这是一个例外,因为指针像Java一样是隐式的)

,正如Mark已经指出的那样;所有Objective-C对象都需要结尾处的
*
;它总是
NSString*aString
,从不
NSString aString

这也适用于铸件;因此,您必须执行
(MyObj*)一个对象
。然而,请注意,强制转换实际上并没有做任何事情,它只是作为编译器的提示