0

在我的应用程序中,我必须在tableview中以列表形式显示图像文件,并以全尺寸和多个缩略图的形式显示它们。因此,基本上我开发了三个独立的班级来处理这三种观点。现在执行任何文件操作,我可以想到两种方法:“代表或NSNotifications”代码的性能评估?

  1. 为所有这些类创建appdelegate对象,并相应地处理它们。当在一个类中执行上的照片文件中的一个操作时,所有其它类是使用NSNotification通知,保持obeserver作为的appDelegate对象。

  2. 在需要时为这些类创建本地对象,并分配代表通过调用相关方法将文件操作从一个类执行到另一个类。

但是,我无法判断哪种方法在内存使用率和性能方面会更好?提前致谢。

回答

1

采用直接消息传送一对一的关系是简单的关系和通信/消息的装置。青睐代表回拨 - 编号2

将此设计变为双向也很容易 - 如果视图离屏,您可以执行取消操作。如果加载失败,则更容易通知控制器。


NSNotification s为同等重量级的。不必要。

将一堆东西存储在单例中(应用程序委托)可能会导致多个不必要的保留对象。如果你的程序是并发的,那么可能会增加更多的复杂性。不需要任何这种复杂性或引入可变全局状态,并且没有理由提出对象应该具有更大的访问范围和生命周期。

您可以优化超出了特定的需求,但我没有看到任何在这个时候。

+1

感谢您的生动的答案! –

0

这取决于很多代码以及如何构建您的应用程序。我一般在以下情况下使用代表:

  • 委托对象存在于需要它的主对象之前和之后。换句话说,主对象不需要担心委托的生命周期。
  • 其中一个对象与其委托对象之间的关系是严格的一对一关系。换句话说,只有一个委托对象需要与主对象进行交互。我已经看到了代表进出的情况,我不会推荐这样的代码。
  • 主要对象需要委托人的信息。

我会用其中的通知:

  • 多个对象需要知道的事情在另一个类中发生的事情。
  • 当主类并不需要与其他类交互,甚至不知道它们的存在。

你选择哪一个我不会有超过一个文件管理对象为每个图像。简单的理由是,有多种手段你需要确保它们都具有相同的状态,因此彼此进行通信。否则,错误会悄然蔓延。