ด้วยความใหม่ในวัตถุประสงค์ -c, cocoa และ iPhone dev โดยทั่วไปฉันมีความปรารถนาอย่างแรงกล้าที่จะใช้ภาษาและกรอบการทำงานให้เกิดประโยชน์สูงสุด
หนึ่งในแหล่งข้อมูลที่ฉันใช้คือบันทึกย่อของชั้นเรียน CS193P ของ Stanford ที่พวกเขาทิ้งไว้บนเว็บ ประกอบด้วยบันทึกการบรรยายงานที่มอบหมายและรหัสตัวอย่างและเนื่องจากหลักสูตรได้รับการพัฒนาโดย Apple dev's ฉันจึงคิดว่าเป็น "จากปากม้า" แน่นอน
เว็บไซต์ชั้นเรียน:
http://www.stanford.edu/class/cs193p/cgi-bin/index.php
การบรรยาย 08 เกี่ยวข้องกับการมอบหมายให้สร้างแอปที่ใช้ UINavigationController ซึ่งมี UIViewControllers หลายรายการที่ถูกส่งไปยังสแต็ก UINavigationController นั่นคือวิธีที่ UINavigationController ทำงาน นั่นเป็นเหตุผล อย่างไรก็ตามมีคำเตือนที่เข้มงวดในสไลด์เกี่ยวกับการสื่อสารระหว่าง UIViewControllers ของคุณ
ฉันจะอ้างอิงจากเรื่องร้ายแรงของสไลด์:
http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf
หน้า 16/51:
วิธีที่จะไม่แบ่งปันข้อมูล
- ตัวแปรทั่วโลกหรือซิงเกิลตัน
- ซึ่งรวมถึงตัวแทนแอปพลิเคชันของคุณ
- การพึ่งพาโดยตรงทำให้รหัสของคุณใช้ซ้ำได้น้อยลง
- และยากต่อการดีบัก & ทดสอบ
ตกลง. ฉันลงกับที่ อย่าสุ่มโยนวิธีการทั้งหมดของคุณที่จะใช้สำหรับการสื่อสารระหว่าง viewcontroller ไปยังผู้แทนแอพของคุณและอ้างอิงอินสแตนซ์ viewcontroller ในวิธีการมอบหมายแอพ พอใช้ '
อีกเล็กน้อยเราได้รับสไลด์นี้บอกเราว่าเราควรทำอย่างไร
หน้า 18/51:
แนวทางปฏิบัติที่ดีที่สุดสำหรับการไหลของข้อมูล
- คิดออกว่าสิ่งที่ต้องมีการสื่อสาร
- กำหนดพารามิเตอร์อินพุตสำหรับตัวควบคุมมุมมองของคุณ
- สำหรับการสื่อสารสำรองลำดับชั้นให้ใช้การเชื่อมต่อหลวม
- กำหนดอินเทอร์เฟซทั่วไปสำหรับผู้สังเกตการณ์ (เช่นการมอบหมาย)
จากนั้นสไลด์นี้จะตามด้วยสิ่งที่ดูเหมือนจะเป็นตัวยึดตำแหน่งซึ่งอาจารย์จะแสดงให้เห็นถึงแนวปฏิบัติที่ดีที่สุดโดยใช้ตัวอย่างกับ UIImagePickerController ฉันหวังว่าวิดีโอจะพร้อมใช้งาน! :(
ตกลงดังนั้น ... ฉันกลัวว่า objc-fu ของฉันไม่แข็งแรงนัก ฉันยังสับสนเล็กน้อยจากบรรทัดสุดท้ายในข้อความข้างต้น ฉันได้ทำส่วนแบ่งที่ยุติธรรมของ googling เกี่ยวกับเรื่องนี้และฉันพบสิ่งที่ดูเหมือนจะเป็นบทความที่ดีพูดคุยเกี่ยวกับวิธีการต่าง ๆ ของเทคนิคการสังเกต / ประกาศ:
http://cocoawithlove.com/2008/06/five-approaches-to -listening-observing.html
วิธีที่ # 5 ระบุผู้ได้รับมอบหมายเป็นวิธี! ยกเว้น ... วัตถุสามารถตั้งผู้รับมอบสิทธิ์ได้ครั้งละหนึ่งคนเท่านั้น ดังนั้นเมื่อฉันมีการสื่อสารผ่านผู้ควบคุมวิวเวอร์หลายคนฉันต้องทำอย่างไร
ตกลงนั่นคือการตั้งค่าแก๊ง ฉันรู้ว่าฉันสามารถทำวิธีการสื่อสารของฉันในตัวแทนแอพได้อย่างง่ายดายโดยการอ้างอิงของอินสแตนซ์ตัวควบคุมหลายตัวในแอพของฉัน แต่ฉันต้องการทำสิ่งที่ถูกต้องทาง
โปรดช่วยฉัน "ทำสิ่งที่ถูกต้อง" โดยตอบคำถามต่อไปนี้:
- เมื่อฉันพยายามที่จะผลักดัน viewcontroller ใหม่บนสแต็ก UINavigationController ที่ควรจะทำการผลักดันนี้ ซึ่งระดับ / แฟ้มในรหัสของฉันเป็นสถานที่ที่ถูกต้องหรือไม่
- เมื่อฉันต้องการที่จะส่งผลกระทบต่อชิ้นส่วนบางส่วนของข้อมูล (ค่าของ Ivar) หนึ่งใน UIViewControllers ของฉันเมื่อฉันอยู่ในที่แตกต่างกัน UIViewController สิ่งที่เป็น "สิทธิ" วิธีที่จะทำเช่นนี้?
- ให้ว่าเราสามารถมีเพียงชุดผู้ร่วมประชุมในช่วงเวลาหนึ่งในวัตถุสิ่งที่จะดำเนินการลักษณะเช่นเมื่ออาจารย์กล่าวว่า"กำหนดอินเตอร์เฟซทั่วไปสำหรับผู้สังเกตการณ์ (เช่นคณะผู้แทน)" ตัวอย่าง pseudocode จะเป็นประโยชน์อย่างมากที่นี่ถ้าเป็นไปได้