我正在开发一个基于导航的iPhone应用程序,它使用OAuth与REST API进行通信,我想知道我的类应该如何最好地相互通信。我有多个UITableViews,多个UITableViewDataSources,一个API类,以及一个在Web视图中处理身份验证的视图控制器。
以下是我现在的结构:
我遇到的麻烦是我的UITableViewDataSources需要与API类进行通信才能获取数据,但可能需要首先进行身份验证,这涉及视图控制器提供的模态身份验证视图。
让每个UITableViewDataSource模型拥有自己的API类实例,或者API类应该是单例吗?
如果每个模型都拥有API类的实例,它应该如何与视图控制器进行身份验证需要进行通信?
如果API类是单例,它应该如何与多个模型和视图控制器交互以显示身份验证对话框?每个代表?发布NSNotifications?
其他一些我没有想过的方法?
真的,我认为问题的核心是我有一个主要用于数据提取的类,但可能需要用户交互才能成功。
答案 0 :(得分:0)
我通常以你描述的方式使用单身,它运作良好。以下是我将如何回答您的问题。
的Singleton
N / A。使用单身人士。
通知效果很好,但我更倾向于为每个请求传递一个委托,然后在单例内保持它,直到请求结束,此时我只是回调给委托成功或失败的消息。如果您的导航堆栈中有多个 live 视图控制器,则所有潜在的监听和响应都会导致通知变得非常混乱。我已经看到了介绍一些非常奇怪的错误。如果您小心,通知工作正常,但传递委托允许您将特定委托(通常是当前视图控制器)与通常理想的特定请求相关联。
我认为你走在正确的轨道上。