我想知道如何在两个不同的 Xib 中访问特定类的对象的相同引用。
我知道通过为每个 xib 中的类创建对象引用会创建不同的对象。即使在使用 AppDelegate 时,它也会创建不同的对象。我想要实现的是两个 xib 中的引用对象应该是相同的(例如,我可以将该对象用作两个不同表视图的数据源。)
我想知道如何在两个不同的 Xib 中访问特定类的对象的相同引用。
我知道通过为每个 xib 中的类创建对象引用会创建不同的对象。即使在使用 AppDelegate 时,它也会创建不同的对象。我想要实现的是两个 xib 中的引用对象应该是相同的(例如,我可以将该对象用作两个不同表视图的数据源。)
只创建一次对象,然后把它放在你可以从两个类中获取的地方。例如,您可以创建对象作为应用程序委托的属性。然后加
AppDelegate *app = [[UIApplication sharedApplication] delegate];
到您的类(在导入之后AppDelegate.h
)并使用app.objectName
.
另一个答案会起作用,但这是一个糟糕的设计。
你应该坚持tell don't ask rule
. 为您的对象提供您希望他们使用的数据源,不要让他们要求数据源,这实际上是一个令人讨厌的全局。
另一个问题是你对笔尖的理解。它们存储一个对象图,当加载 nib 时,该图未存档,并且其中的每个对象都被实例化。如果您在图中有两个相同的对象,那么您最终将得到两个实例,而不是对一个实例的两个引用。当您拖出多个视图时也是如此,您最终会得到多个UIView
(和子类)实例,这正是您所期望的。
学习在 nib 中可以/不可以做什么与在代码中必须做什么以及它们如何组合在一起之间的界限是非常值得的。
有趣的 !
尝试使用单例方法,查看此链接http://www.duckrowing.com/2010/05/21/using-the-singleton-pattern-in-objective-c/
使用这种方法,您可以创建一个实例在整个应用程序生命周期中可用