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.
Delegasi aplikasi Anda adalah jantung dari aplikasi Anda. Ini secara efektif "Program Controller" Anda.
Delegasi Aplikasi adalah kelas yang menerima pesan tingkat aplikasi, termasuk pesan applicationDidFinishLaunching yang paling umum digunakan untuk memulai pembuatan tampilan lain.
Meskipun tidak persis sama, Anda bisa menganggapnya sebagai rutin "utama ()" dari program Kakao Anda.
sumber
@ Shivam, terima kasih.
Dari apa yang saya mengerti
appDelegate
, dekat dengan apa yangApplication
ada di Android. YaituviewDidLoad
,viewDidDisappear
sebanding dengan siklus hidup Android. Setiap aplikasi memiliki siklus hidup, dari peluncuran hingga interupsi dari panggilan masuk, hingga pemberitahuan yang muncul. Jika Anda memerlukan kode Anda untuk melakukan sesuatu yang istimewa ketikasystem
peristiwa ini terjadi maka Anda perlu menulis kode metode.Di Android kita menggunakan
onPause
,onDestroy
,onCreate
agak callback metode untuk menangani kejadian sistem tersebut.sumber
onPause
,onCreate
danonDestroy
metode Android lebih mirip denganviewDidDisappear
,viewDidLoad
metode siklus hidup Pengontrol Tampilan iOS. Jika Anda harus membandingkan, saya akan mengatakanApplication
kelas Android akan lebih dekat denganAppDelegate
iOS.Semoga ini bisa membantu sedikit lagi ...
Pemrogram yang baru mengenal bahasa ini selalu memiliki pertanyaan yang sama - apakah program dimulai dari metode utama? Ya, Anda benar dalam hal ini; Aplikasi iOS juga mulai dari metode utama.
Kelas utama Anda memanggil fungsi di bawah ini:
UIApplicationMain memulai loop run Cocoa Touch dan infrastruktur aplikasi yang menciptakan
UIApplication
objek. Aplikasi kami membutuhkan konten sehingga obyektif-c menggunakan delegasi untuk menangani ini. Itu sebabnya kami menyebutnya AppDelegate (bertindak sebagai delegasiUIApplication
). Kami menerapkan beberapa metode opsional delegasi itu dan berperilaku sesuai.sumber