【发布时间】:2009-07-24 22:38:28
【问题描述】:
我目前正在开发我的第一个 iPhone 应用程序,我想知道共享将在每个控制器中使用的对象的最佳方式是什么。
我正在考虑在其他控制器中引用包含所需数据的控制器并通过属性访问这些数据,这是个好主意还是有更好的方法?
或者我们可以在应用程序的任何地方声明任何可访问的全局变量(不是 const)吗?
谢谢
【问题讨论】:
标签: iphone objective-c global-variables scope
我目前正在开发我的第一个 iPhone 应用程序,我想知道共享将在每个控制器中使用的对象的最佳方式是什么。
我正在考虑在其他控制器中引用包含所需数据的控制器并通过属性访问这些数据,这是个好主意还是有更好的方法?
或者我们可以在应用程序的任何地方声明任何可访问的全局变量(不是 const)吗?
谢谢
【问题讨论】:
标签: iphone objective-c global-variables scope
从您的问题中不清楚您正在处理哪种数据,但我在 iphone 应用程序中使用的一种方法是包含应用程序状态和状态管理功能的单例对象。
在Cocoa With Love 上找到了关于使用单例与应用程序代理的此类数据的很好的讨论,我同意他在这里所说的话。
例如,在这种情况下,应用程序有一个与 Web 应用程序绑定的用户帐户,因此在加载时,应用程序将初始化单例对象,并且当用户登录时,它会在单例中保留对用户对象的引用,以便用户api调用可以参考info。
这种方法对我来说效果很好,你可以看到如何在 Objective-C here 中创建一个单例类,在苹果文档 here 中,有几种方法可以提供相同的功能结果。
一旦定义了单例类,您就可以在 applicationDidFinishLaunching 或主控制器的 viewDidLoad 中对其进行初始化,并初始化您需要管理的全局可访问数据。我强烈建议您阅读我在上面链接的 Cocoa With Love 文章,以考虑管理整个过程。
希望对您有所帮助。
如果您遇到困难,我可以发布一些示例代码,但可用的单例类示例非常易于使用。
【讨论】:
如果你真的需要它是全局的,你可以把它放在 AppDelegate 中或者创建一个数据管理对象。但我认为这样做是不受欢迎的。
【讨论】: