Saya biasanya menghindari pendekatan desain yang tersirat oleh penggunaan istilah "jantung aplikasi Anda" oleh Andrew. Apa yang saya maksudkan dengan ini adalah saya pikir Anda harus menghindari penggumpalan terlalu banyak hal di lokasi pusat - desain program yang baik biasanya melibatkan pemisahan fungsi dengan "area yang menjadi perhatian".
Objek delegasi adalah objek yang mendapat pemberitahuan ketika objek yang terhubung mencapai peristiwa atau keadaan tertentu. Dalam hal ini, Delegasi Aplikasi adalah objek yang menerima pemberitahuan ketika objek aplikasi UIA mencapai kondisi tertentu. Dalam banyak hal, ini adalah pola Pengamat satu-ke-satu yang khusus.
Ini berarti bahwa "area yang menjadi perhatian" untuk AppDelegate adalah menangani status aplikasi UIA khusus. Yang paling penting dari ini adalah:
- applicationDidFinishLaunching: - bagus untuk menangani konfigurasi dan konstruksi saat startup
- applicationWillTerminate: - baik untuk membersihkan di akhir
Anda harus menghindari menempatkan fungsi lain di AppDelegate karena mereka tidak benar-benar berada di sana. Fungsionalitas lain tersebut meliputi:
- Data dokumen - Anda harus memiliki manajer dokumen tunggal (untuk beberapa aplikasi dokumen) atau dokumen tunggal (untuk aplikasi dokumen tunggal)
- Pengontrol tombol / tabel / tampilan, metode delegasi tampilan atau penanganan tampilan lainnya (kecuali untuk konstruksi tampilan tingkat atas di applicationDidFinishLaunching :) - karya ini harus berada dalam kelas controller tampilan masing-masing.
Banyak orang memasukkan hal-hal ini ke dalam AppDelegate mereka karena mereka malas atau mereka pikir AppDelegate mengendalikan keseluruhan program. Anda harus menghindari pemusatan di AppDelegate Anda karena itu mengerutkan area yang menjadi perhatian dalam aplikasi dan tidak skala.