Menjadi orang baru di bidang obyektif-c, kakao, dan iPhone secara umum, saya memiliki keinginan kuat untuk mendapatkan yang terbaik dari bahasa dan kerangka kerja.
Salah satu sumber yang saya gunakan adalah catatan kelas CS193P milik Stanford yang mereka tinggalkan di web. Ini termasuk catatan kuliah, tugas dan kode sampel, dan karena kursus diberikan oleh Apple dev, saya pasti menganggapnya sebagai "dari mulut kuda".
Situs Web Kelas:
http://www.stanford.edu/class/cs193p/cgi-bin/index.php
Kuliah 08 terkait dengan tugas untuk membangun aplikasi berbasis UINavigationController yang memiliki beberapa UIViewControllers yang didorong ke tumpukan UINavigationController. Begitulah cara kerja UINavigationController. Itu logis. Namun, ada beberapa peringatan keras di slide tentang komunikasi antara UIViewControllers Anda.
Saya akan mengutip dari slide yang serius ini:
http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf
Halaman 16/51:
Bagaimana Tidak Berbagi Data
- Variabel Global atau lajang
- Ini termasuk delegasi aplikasi Anda
- Ketergantungan langsung membuat kode Anda kurang dapat digunakan kembali
- Dan lebih sulit untuk di-debug & diuji
Baik. Saya kecewa dengan itu. Jangan membabi buta melemparkan semua metode Anda yang akan digunakan untuk berkomunikasi antara viewcontroller ke dalam delegasi aplikasi Anda dan merujuk contoh instance viewcontroller dalam metode delegasi aplikasi. Adil.
Sedikit lebih jauh, kita dapat slide ini memberi tahu kita apa yang harus kita lakukan.
Halaman 18/51:
Praktik Terbaik untuk Aliran Data
- Cari tahu persis apa yang perlu dikomunikasikan
- Tetapkan parameter input untuk pengontrol tampilan Anda
- Untuk berkomunikasi cadangan hierarki, gunakan kopling longgar
- Tetapkan antarmuka umum untuk pengamat (seperti delegasi)
Slide ini kemudian diikuti oleh apa yang tampak sebagai slide tempat penampung di mana dosen kemudian menunjukkan praktik terbaik menggunakan contoh dengan UIImagePickerController. Saya berharap videonya tersedia! :(
Ok, jadi ... Saya khawatir objc-fu saya tidak begitu kuat. Saya juga agak bingung dengan baris terakhir dalam kutipan di atas. Saya telah melakukan bagian yang adil dari googling tentang hal ini dan saya menemukan apa yang tampaknya menjadi artikel yang layak berbicara tentang berbagai metode teknik Pengamatan / Pemberitahuan:
http://cocoawithlove.com/2008/06/five-approaches-to -listening-observing.html
Metode # 5 bahkan menunjukkan delegasi sebagai metode! Kecuali .... objek hanya dapat menetapkan satu delegasi pada satu waktu. Jadi ketika saya memiliki beberapa komunikasi viewcontroller, apa yang harus saya lakukan?
Ok, itu yang mengatur geng. Saya tahu saya dapat dengan mudah melakukan metode komunikasi dalam delegasi aplikasi dengan merujuk beberapa instance viewcontroller di delegasi app saya, tetapi saya ingin melakukan hal semacam ini dengan cara yang benar .
Tolong bantu saya "melakukan hal yang benar" dengan menjawab pertanyaan-pertanyaan berikut:
- Ketika saya mencoba untuk mendorong viewcontroller baru di tumpukan UINavigationController, siapa yang harus melakukan push ini. Yang kelas / file dalam kode saya adalah tempat yang benar?
- Ketika saya ingin memengaruhi sebagian data (nilai iVar) di salah satu UIViewControllers saya ketika saya berada di UIViewController yang berbeda , apa cara "benar" untuk melakukan ini?
- Memberikan bahwa kita hanya dapat memiliki satu delegasi ditetapkan pada suatu waktu dalam suatu objek, seperti apa implementasi untuk ketika dosen mengatakan "Tentukan antarmuka umum untuk pengamat (seperti delegasi)" . Contoh pseudocode akan sangat membantu di sini jika memungkinkan.