所以,我在一个类中声明了2个变量,我们称之为model.h
,在这个类中我初始化类Car
和Road
的实例。如果我希望Car
知道
road
还有哪些其他选项,而不是Road
中Car
的{{1}}引用Model
,这种情况有用吗?
答案 0 :(得分:1)
据我了解,将指针传递给指针并不是一个很好的设计模式,可以在整个应用程序中使用。它仅在Objective-c中保留,仅用于少数几个操作,即NSError。请参阅以下主题中的bbum的回复。
Arguments by reference in Objective-C
从它的接受和它的作者判断我会说这是非常好的建议,虽然也许不是“福音”。您当然可以将指针传递给指针,但这可能不是最好的方法。
另一种方法是考虑你正在考虑通过引用传递什么值(意味着指向指针),然后考虑方法/函数的设计,以便将这些值封装到一个类中。从你的方法/函数返回。
答案 1 :(得分:1)
在Objective-C中,对象总是通过引用传递,但您可以通过仔细设计类来缓解这些对象。
例如,NSString
和NSNumber
始终通过引用传递,但您可以将它们视为按值传递,因为它们是不可变的。您不能更改NSString
(仅限NSMutableString
)或NSNumber
,因此无论您是通过价值还是通过参考传递都无关紧要。
同样,复制对象并使用-isEqual:
进行比较以后可以模拟传值。 NSDictionary
执行此操作 - -setObject:forKey:
复制密钥并仅使用副本,而-objectForKey:
使用-isEqual:
和-hash
来比较密钥。
在您的情况下,如果道路的“地图”是固定的并且您不需要链接,那么您可能能够使Road
个对象不可变(或者至少在加载后不会发生变异)道路回到汽车。如果你这样做,那么通过引用传递实际上是一个有用的优化,而不是等待发生的错误。
答案 2 :(得分:0)
真的没有其他选择。通过Objective-C中的指针访问对象始终。没有办法声明一个 对象的变量,你只能创建引用对象的变量。