Objective c &引用;代表或通知”;判定代码的性能?

Objective c &引用;代表或通知”;判定代码的性能?,objective-c,memory-management,nsnotificationcenter,performance-testing,nsnotifications,Objective C,Memory Management,Nsnotificationcenter,Performance Testing,Nsnotifications,在我的应用程序中,我必须在tableview中将图像文件显示为列表,以完整大小和多个缩略图的形式显示它们。因此,基本上我开发了三个独立的类来处理这三个视图。现在要执行任何文件操作,我可以想到两种方法: 为所有这些类创建appdelegate对象,并相应地处理它们。当在一个类中对照片文件执行一个操作时,将使用NSNotification通知所有其他类,并将obeserver保留为Appdelegate对象 在需要时为这些类创建本地对象,并通过调用相关方法为从一个类到另一个类执行文件操作分配委托 但

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

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

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


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

    与直接消息传递使用一对一关系是更简单的关系和通信/消息传递方式。支持代理回调--第2个

    使这种设计双向也很容易——如果视图离开屏幕,您可以执行取消。如果负载发生故障,则更容易通知控制器


    NSNotification
    s相当重。没有必要

    在单例(应用程序委托)中存储大量内容可能会导致几个不必要的保留对象。如果您的程序是并发的,那么这会增加更多的复杂性。不需要这种复杂性,也不需要引入可变的全局状态,也没有理由让对象拥有更大的访问范围和生存期


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

    这在很大程度上取决于代码和您如何构建应用程序。我通常在以下情况下使用代理:

    • 委托对象存在于需要它的主对象之前和之后的位置。换句话说,主对象不需要担心其委托的生命周期
    • 其中,对象与其委托对象之间的关系是严格的一对一关系。换句话说,只有一个委托对象需要与主对象交互。我见过代理被交换的情况,我不推荐这样的代码
    • 其中主对象需要来自委托的信息
    我会在以下情况下使用通知:

    • 多个对象需要知道另一个类中发生的事情
    • 主类不需要与其他类交互,甚至不需要知道它们的存在
    无论您选择哪一种,我都不会为每个图像设置多个文件管理对象。简单的原因是,拥有多个意味着您需要确保它们都具有相同的状态,从而相互通信。否则虫子就会爬进来