所以,我在一个类中声明了 2 个变量,让我们调用它model.h
,在这个类中我初始化类的实例Car
和Road
. 如果我想Car
知道
除了在这种情况下传递对inroad
的引用之外还有哪些其他选项?Road
Car
Model
3 回答
据我了解,将指针传递给指针并不是在整个应用程序中使用的一种很好的设计模式。它在objective-c 中仅用于选择少数操作,即NSError。请参阅下面线程中 bbum 的回复。
从它的接受程度和它的作者来看,我会说这是一个很好的建议,尽管可能不是“福音”。您当然可以将指针传递给您想要的所有指针,但这可能不是最好的方法。
另一种方法是考虑您正在考虑通过引用传递哪些值(意味着指向指针的指针),然后考虑方法/函数的设计,以便您可以将这些值封装到从您的返回的类中方法/功能。
在 Objective-C 中,对象总是通过引用传递,但您可以通过仔细设计类来缓解这种情况。
例如,NSString
andNSNumber
总是通过引用传递,但您可以将它们视为按值传递,因为它们是不可变的。你不能改变一个NSString
(只有一个NSMutableString
)或NSNumber
,所以你是通过值还是通过引用并不重要。
类似地,复制对象并-isEqual:
稍后使用来比较它们可以模拟按值传递。NSDictionary
这样做—<code>-setObject:forKey: 复制密钥并仅使用副本,而-objectForKey:
使用-isEqual:
and-hash
来比较密钥。
Road
在您的情况下,如果您的道路“地图”是固定的并且您不需要将道路链接回汽车,您可能能够使对象不可变(或者至少在它们加载后永远不会发生变异)。如果你这样做,那么通过引用传递实际上是一种有用的优化,而不是等待发生的错误。
真的没有其他选择。在 Objective-C 中,对象总是通过指针访问。无法将变量声明为对象,您只能创建引用对象的变量。