gpt4 book ai didi

iphone - 监听器/观察器方法通知模型更改的优缺点

转载 作者:太空狗 更新时间:2023-10-30 03:49:50 25 4
gpt4 key购买 nike

在任何典型的 iPhone 应用程序中,都会有负责数据加载/解析的模型类。完成数据加载/解析任务后,需要通知受影响的 Controller 模型发生变化并相应地更新 View 。

在 iPhone 应用程序开发中有几种监听器/观察器方法。使用以下每种方法的优缺点和原因是什么?

  1. KVO
  2. NSNotification
  3. 代表
  4. 任何其他已知方法

最佳答案

以我自己的经验:

委派:

  • PRO:仅当您只有一个对象需要通知时使用;
  • PRO:使用明确的协议(protocol),您可以清楚地记录您的意图;
  • 缺点:如果使用不当,可能会成为崩溃和内存泄漏的根源(提示:不要保留委托(delegate)、分配委托(delegate),并记住在/如果委托(delegate)被释放时取消分配!)

我在我的博客上的这篇文章中写了关于委托(delegate)产生的内存管理问题:

http://akosma.com/2009/01/28/10-iphone-memory-management-tips/

NSNotification:

  • PRO:当您有多个对象要通知时会更好;
  • PRO:非常灵活,导致松散耦合的类;
  • 缺点:通知是同步发送的(因此请确保您的个人通知处理程序只做很少的事情)
  • 缺点:有时难以记录和维护。请务必在 header 文档中清楚地解释每个通知的含义以及发送时间。

KVO:

  • 对 NSNotifications 有类似的担忧;
  • 缺点:更难以记录。请务必在您的评论中添加更多标题文档或架构提示,以解释谁在听什么。我个人不会使用 KVO 进行数据加载或解析任务。

就个人而言,在处理与远程 Web 服务通信的启用网络的应用程序时,我使用单例数据加载器类(包装 ASIHTTPRequest 并处理所有序列化和反序列化),它会在发生某些事情时弹出通知。这样我就可以让应用程序委托(delegate)自己处理连接错误(如果需要弹出警报等),并且每个 Controller 只关心它想要的响应。

当然,这种方法取决于应用程序,但这种通用架构可能是您自己代码的起点。

关于iphone - 监听器/观察器方法通知模型更改的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com