【问题标题】:Where's the best place to put your NSUserDefault save/load code?放置 NSUserDefault 保存/加载代码的最佳位置在哪里?
【发布时间】:2010-02-08 00:55:33
【问题描述】:

使用 NSUserDefaults 来保存/加载一些小值……这非常简单。

但是在哪里我应该将我的 SAVE 或 LOAD 代码放在哪里?

仅当显示某个视图时,我才希望将默认值设置为 LOAD。 我希望默认设置为 SAVE,仅当该视图退出/卸载/隐藏时。

(我使用“基于视图的模板”创建了一个简单的应用程序,并将我的字符串值放在 UITextFields 内部的视图上。)

【问题讨论】:

    标签: iphone nsuserdefaults


    【解决方案1】:

    该视图的UIViewControllerviewWillAppeardealloc/viewDidDisappear 方法怎么样?

    【讨论】:

    • 我担心 viewWillAppear 会“过早”运行我的代码。 (视图还不存在。)我担心 viewDidDisappear 或 viewDidUnload 会“为时已晚”运行我的代码。 (视图已经消失了。)我是否需要做一些特别的事情才能让 viewDidDisappear 或 viewDidUnload 运行? (除了创建它们。)
    • viewWillAppear 在您的视图即将显示在屏幕上时运行(因此它必须已经存在)。同样,viewDidDisappear 将在您的视图离开屏幕后运行。 viewDidUnload 仅在您的应用程序内存不足时调用(因此并非总是如此)
    • 在这两种情况下,您的视图仍然存在。
    • 我必须做一些特别的事情才能让 viewDidDisappear 运行吗? (除了创建它。)
    • @Kimberly 您是否使用UIViewController 来管理视图?我强烈推荐阅读:developer.apple.com/iphone/library/featuredarticles/…
    【解决方案2】:

    嗯,你谈论的观点是这样的:

    viewDidLoad / viewWillLoad
    viewDidUnload / dealloc
    

    看起来是不错的候选人。此外,在您的 init 方法中,特别是如果您想在此时将 iVars 初始化为来自 NSUserDefaults 的内容。

    【讨论】:

    • 这些也是我最初的想法,但她可能希望每次在视图显示/消失时都发生这种情况。
    • 是的,你的权利 - 我想这真的取决于 OP 的需求。
    【解决方案3】:

    您应该始终将代码本身放入其自己的文件对中以管理用户默认值,并且该模块应负责序列化和反序列化,尽管被序列化的对象本身应该拥有这种精湛技艺。您只能在 viewDid Load 中获得绝对需要的设置,以免减慢初始化速度。

    如果您有大量的用户设置、数组和字典、多个会话数据,请不要错误地将它们存储在单个字典和键下。把它们分开。

    如果您的应用程序需要用户登录(我使用加密,所以我的大多数人都这样做),那么只有在登录后,通过最小负载的用户设置验证密码,您才应该继续加载较重的会话设置。无论如何,这是在“用户时间”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多