我期望能够通过我的应用程序中的任何位置引用某些状态/对象。例如,用户登录到他们的应用程序,我需要调用Web服务并检索用户信息。然后,我希望能够从任何地方访问这些信息在应用程序中的东西,如以下:iPhone正确使用应用程序代理
myAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
user = delegate.u;
是设置一个实例变量作为应用程序委托User对象,并从那里引用它需要一个穷的时候它的方式吗?我通常在用户登录时设置它。
希望听到专业人士如何处理这一个。
我在几年前发布了这篇文章,从那以后我学到了一些东西。单身人士认识的重要事情是,他们与全球变数没有区别。这并不一定意味着它们在所有情况下都应该避免,它只是意味着它们具有相同的缺点,尤其是在适当的封装和易于测试的情况下。例如,在这种情况下,在没有首先设置全局“用户”值的情况下,单独测试依赖于[MyCommon singleton]的单独类是非常困难的。 – 2010-04-19 00:22:43
全局可访问的单例的一个很好的替代方法是使用依赖注入。实质上,在您的应用程序委托中创建相同的“MyCommon”对象,然后将其传递给需要它的任何子对象,然后将此过程继续到对象层次结构的下方。这样一来就增加了一点工作量,但它产生了更易于维护和调试的面向对象的程序。 – 2010-04-19 00:27:52
要了解SO社区对此问题的看法,下面是我在开始制作开关时询问有关单身人士的问题的链接:http://stackoverflow.com/questions/474613 – 2010-04-19 00:33:49