访问两个不同的nib文件中的相同对象

时间:2012-08-07 14:23:06

标签: objective-c cocoa-touch cocoa xib nib

我想知道如何在两个不同的Xib中访问特定类的对象的相同引用。

  

据我所知,通过为每个xib中的类创建一个对象引用可以创建不同的对象。甚至在使用AppDelegate时也会创建不同的对象。    我想要实现的是两个xib中的引用对象应该是相同的(例如,我可以使用该对象作为两个不同表视图的数据源。)

3 个答案:

答案 0 :(得分:2)

只创建一次对象,并将其放在可以从两个类中获取的位置。例如,您可以将对象创建为应用程序委托的属性。然后添加

AppDelegate *app = [[UIApplication sharedApplication] delegate];

到您的课程(导入AppDelegate.h后)并使用app.objectName访问该对象。

答案 1 :(得分:2)

另一个答案会起作用,但这是一个糟糕的设计。

你应该坚持tell don't ask rule。为您的对象提供您希望他们使用的数据源,不要让他们要求dataSource,这实际上是一个讨厌的全局。

另一个问题是你对笔尖的理解。它们存储一个对象图,当加载一个nib时,该图是未存档的,并且其中的每个对象都被实例化。如果图中有两个相同的对象,那么最终会有两个实例两个对一个实例的引用。当你拖出多个视图时,你最终得到了UIView(和子类)的多个实例,这正是你所期望的。

值得努力学习你在笔尖中能做什么/不能做什么与在代码中你必须做什么以及它们如何组合在一起之间的界限。

答案 2 :(得分:1)

有趣!
尝试使用单例方法,请查看此链接http://www.duckrowing.com/2010/05/21/using-the-singleton-pattern-in-objective-c/
使用此方法,您可以创建一个在整个应用程序生命周期中可用的实例