0

在我的應用程序中,我必須在tableview中以列表形式顯示圖像文件,並以全尺寸和多個縮略圖的形式顯示它們。因此,基本上我開發了三個獨立的班級來處理這三種觀點。現在執行任何文件操作,我可以想到兩種方法:「代表或NSNotifications」代碼的性能評估?

  1. 爲所有這些類創建appdelegate對象,並相應地處理它們。當在一個類中執行上的照片文件中的一個操作時,所有其它類是使用NSNotification通知,保持obeserver作爲的appDelegate對象。

  2. 在需要時爲這些類創建本地對象,並分配代表通過調用相關方法將文件操作從一個類執行到另一個類。

但是,我無法判斷哪種方法在內存使用率和性能方面會更好?提前致謝。

回答

1

採用直接消息傳送一對一的關係是簡單的關係和通信/消息的裝置。青睞代表回撥 - 編號2

將此設計變爲雙向也很容易 - 如果視圖離屏,您可以執行取消操作。如果加載失敗,則更容易通知控制器。


NSNotification s爲同等重量級的。不必要。

將一堆東西存儲在單例中(應用程序委託)可能會導致多個不必要的保留對象。如果你的程序是併發的,那麼可能會增加更多的複雜性。不需要任何這種複雜性或引入可變全局狀態,並且沒有理由提出對象應該具有更大的訪問範圍和生命週期。

您可以優化超出了特定的需求,但我沒有看到任何在這個時候。

+1

感謝您的生動的答案! –

0

這取決於很多代碼以及如何構建您的應用程序。我一般在以下情況下使用代表:

  • 委託對象存在於需要它的主對象之前和之後。換句話說,主對象不需要擔心委託的生命週期。
  • 其中一個對象與其委託對象之間的關係是嚴格的一對一關係。換句話說,只有一個委託對象需要與主對象進行交互。我已經看到了代表進出的情況,我不會推薦這樣的代碼。
  • 主要對象需要委託人的信息。

我會用其中的通知:

  • 多個對象需要知道的事情在另一個類中發生的事情。
  • 當主類並不需要與其他類交互,甚至不知道它們的存在。

你選擇哪一個我不會有超過一個文件管理對象爲每個圖像。簡單的理由是,有多種手段你需要確保它們都具有相同的狀態,因此彼此進行通信。否則,錯誤會悄然蔓延。