【问题标题】:Using iPhone NSNotifications in MVC app在 MVC 应用程序中使用 iPhone NSNotifications
【发布时间】:2009-10-15 00:21:29
【问题描述】:

我有一个基于 NavigationController 的应用程序,其中数据模型在使用 CoreData 获取后存储在 appDelegate 中。显示数据的视图都有一个指向 appDelegate 的指针,以便它们可以查询模型以获取所需的数据。然后他们调用 appDelegate 中的方法来响应用户的选择。

我的问题是,MVC 模式不是以最佳方式隐藏视图中的数据吗? appDelegate(在这种情况下用作模型和控制器)向视图提供数据,并让视图在有用户输入时简单地发送通知是否是最佳实践?这将消除视图维护指向 appDelegate 的指针的需要。

【问题讨论】:

    标签: iphone


    【解决方案1】:

    您担心 AppDelegate 担任此角色是正确的。 AppDelegate 是一个很容易转储东西的地方,它很快就会被角色淹没。正如您所注意到的,它正在播放数据模型、数据控制器和应用程序委托。如果您要使用[[[UIApplication sharedApplication] delegate] 访问 AppDelegate,这尤其是一个问题,因为它很难在其他程序中重用视图。如果您的视图有一个 delegate ivar 恰好指向 AppDelegate,但很容易指向其他对象,则问题不大。

    视图通常应该有一个将 UI 事件传递给的委托。请参阅 UITextFieldUITextFieldDelegate 以获得一个很好的示例模式。对于这种东西,视图通常不会发布NSNotification。相反,根据我的经验,模型类通常在没有委托的情况下效果最好。

    我非常相信NSNotification。我的程序将它们用于从模型层向上移动的几乎所有数据。但对于从视图层向下移动的操作,委托和直接方法调用通常效果最好。

    【讨论】:

      【解决方案2】:

      访问数据的不是您的视图。控制器应该是数据和视图之间的链接。如果你的视图是指控制器,那很好,基本上就是 MVC 的全部内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多