使用单例类来跟踪用户信息是否合适?

时间:2014-07-04 15:43:55

标签: ios objective-c design-patterns login singleton

我正在开发一个需要用户登录的IOS应用程序。它有一个主视图控制器,用于检查用户是否已经登录。如果没有,它会转到另一个显示登录的视图控制器提示。当用户登录时,主视图控制器会关闭登录视图并显示适合登录用户的信息。

应用程序还将用户凭据存储在设置plist中。如果存在该信息,则应用程序将尝试使用存储的凭据登录。如果成功,主视图控制器将加载用户适当的信息。如果没有,它将转移到登录视图控制器。

我最终复制了Master View和Log in View控制器中的代码,用于验证用户ID和密码。然后,我需要将prepareforsegue方法中的用户实例传递给任何后续视图。

我应该实现单例类来跟踪登录用户吗?这很诱人,因为它似乎可以节省大量的工作。将用户登录的方法I委托给登录视图控制器返回主视图控制器并在每次推送新视图控制器时在prepareforsegue中传递用户实例会不会更好?

1 个答案:

答案 0 :(得分:2)

  

我应该实现单例类来跟踪登录用户吗?

你当然可以这样做。但是,您还可以创建一个无状态帮助程序类,根据需要从后备存储中读取凭据,从而避免创建单例。

  

我最终复制了Master View和Log in View控制器中的代码

无状态辅助方法(即其中只有类(+)方法的类)会阻止代码重复:您最终复制的代码将进入共享帮助程序类。

  

该应用程序还将用户凭据存储在设置plist中。

如果未加密的密码是用户凭据的一部分,则这不是一个安全的解决方案。您应该使用keychain services将凭据保存在受保护的存储中。