0

在我的应用程序中,我必须在 tableview 中将图像文件显示为列表,以全尺寸和多个缩略图显示它们。因此,基本上我开发了三个单独的类来处理这三个视图。现在要执行任何文件操作,我可以想到两种方法:

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

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

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

4

2 回答 2

1

使用与直接消息传递的一对一关系是更简单的关系和通信/消息传递方式。支持委托回调 -编号 2

使这种设计具有双向性也很容易——如果视图离开屏幕,您可以执行取消操作。如果加载失败,更容易通知控制器。


NSNotifications 是相对重量级的。不必要。

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

除此之外,您还可以针对特定需求进行优化,但我目前看不到任何内容。

于 2012-09-10T05:58:09.413 回答
0

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

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

我会在以下情况下使用通知:

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

无论您选择哪一个,我都不会为每个图像拥有一个以上的文件管理对象。简单的原因是拥有多个意味着您需要确保它们都具有相同的状态,因此可以相互通信。否则虫子会爬进来。

于 2012-09-10T06:09:12.613 回答