在Java中,我可以使用(ObjectA)objB轻松传递数据。如何在Objective C中执行类似的操作?另外,为什么Objective C不能返回Object,但只能返回id?我做 - (MyObj)returnMyObject {},但Xcode警告我,我不能使用MyObj,但我可以返回id ..... - (id)returnMyObject {}。
答案 0 :(得分:3)
Java和Apple的Objective C对象的底层模型实际上是相同的,它们都有堆上的所有对象,并且可以通过指针访问。
不同之处在于Java指针是隐藏的(ObjectA)objB是指向ObjectA类型数据的指针。在Objective C中,指针是显式的,你需要说(MyObj *)returnMyObject {}
id是指向对象的指针(因此指针是像Java一样隐式的例外)
答案 1 :(得分:0)
正如马克已经指出的那样;所有Objective-C对象最后都需要*
;它总是NSString *aString
,永远不会NSString aString
。
这同样适用于演员阵容;所以你必须做(MyObj *)anObject
。但是请注意,强制转换实际上并不是做任何东西,它只是作为编译器的提示。