ฉันเพิ่งเริ่มทำงานกับแอพของ iPhone ฉันจะรู้ได้อย่างไรว่าฉันควรวางสิ่งของใน AppDelegate กับคลาสที่กำหนดเอง มีกฎหรือการเปรียบเทียบใด ๆ กับภาษาโปรแกรมอื่นเช่น Python หรือ PHP ที่ใช้ AppDelegate like pattern หรือไม่?
ฉันเพิ่งเริ่มทำงานกับแอพของ iPhone ฉันจะรู้ได้อย่างไรว่าฉันควรวางสิ่งของใน AppDelegate กับคลาสที่กำหนดเอง มีกฎหรือการเปรียบเทียบใด ๆ กับภาษาโปรแกรมอื่นเช่น Python หรือ PHP ที่ใช้ AppDelegate like pattern หรือไม่?
คำตอบ:
ฉันมักจะหลีกเลี่ยงวิธีการออกแบบโดยนัยโดยการใช้คำว่า "หัวใจของแอปพลิเคชันของคุณ" ของ Andrew สิ่งที่ฉันหมายถึงคือฉันคิดว่าคุณควรหลีกเลี่ยงการทำสิ่งของมากเกินไปในตำแหน่งศูนย์กลาง - การออกแบบโปรแกรมที่ดีมักเกี่ยวข้องกับการแยกฟังก์ชันการทำงานด้วย "พื้นที่ที่น่าเป็นห่วง"
วัตถุผู้รับมอบสิทธิ์เป็นวัตถุที่ได้รับแจ้งเมื่อวัตถุที่เชื่อมต่อถึงเหตุการณ์หรือสถานะบางอย่าง ในกรณีนี้ Application Delegate เป็นวัตถุที่ได้รับการแจ้งเตือนเมื่อวัตถุ UIApplication มาถึงบางสถานะ มันเป็นรูปแบบการสังเกตการณ์แบบหนึ่งต่อหนึ่งโดยเฉพาะ
ซึ่งหมายความว่า "พื้นที่ของความกังวล" สำหรับ AppDelegate กำลังจัดการสถานะ UIApplication พิเศษ สิ่งสำคัญที่สุดคือ:
คุณควรหลีกเลี่ยงการวางฟังก์ชั่นอื่น ๆ ไว้ใน AppDelegate เนื่องจากไม่มีอยู่จริง ฟังก์ชั่นอื่น ๆ ได้แก่ :
หลายคนจับสิ่งเหล่านี้เข้าใน AppDelegate ของพวกเขาเพราะพวกเขาขี้เกียจหรือพวกเขาคิดว่า AppDelegate ควบคุมโปรแกรมทั้งหมด คุณควรหลีกเลี่ยงการรวมศูนย์ใน AppDelegate ของคุณเนื่องจากมันจะทำให้พื้นที่กังวลในแอพและไม่ปรับขนาด
ผู้แทนแอปพลิเคชันของคุณคือหัวใจของแอปพลิเคชันของคุณ มันเป็น "โปรแกรมควบคุม" ของคุณอย่างมีประสิทธิภาพ
Application Delegate เป็นคลาสที่รับข้อความระดับแอปพลิเคชันรวมถึงข้อความ applicationDidFinishLaunching ที่ใช้บ่อยที่สุดเพื่อเริ่มต้นการสร้างมุมมองอื่น ๆ
ในขณะที่ไม่เหมือนกันคุณอาจคิดว่ามันเป็นกิจวัตร "main ()" ของโปรแกรมโกโก้ของคุณ
@Shivam ขอบคุณ
จากสิ่งที่ฉันเข้าใจappDelegate
อยู่ใกล้กับสิ่งที่Application
อยู่ใน Android viewDidLoad
, viewDidDisappear
ก็เปรียบได้กับสิ่งที่ Android ของระยะเวลาการ ทุกแอปพลิเคชันมีวงจรชีวิตตั้งแต่การเริ่มต้นจนถึงการหยุดชะงักจากการโทรเข้ามาจนถึงการแจ้งเตือนที่ปรากฏขึ้น หากคุณต้องการรหัสเพื่อทำสิ่งพิเศษเมื่อสิ่งเหล่านี้system
เหตุการณ์เกิดขึ้นจากนั้นคุณต้องเขียนรหัสวิธีการ
ใน Android เราใช้onPause
, onDestroy
, onCreate
นะโทรกลับวิธีการที่จะจัดการกับเหตุการณ์ของระบบดังกล่าว
onPause
, onCreate
และonDestroy
วิธีการของ Android มีมากขึ้นคล้ายกับviewDidDisappear
, viewDidLoad
วิธีการของวงจรชีวิต iOS รุ่นดูควบคุมของ ถ้าคุณต้องเปรียบเทียบฉันจะบอกว่าApplication
ระดับของ Android จะใกล้เคียงกับAppDelegate
iOS มากขึ้น
หวังว่านี่จะช่วยได้มากกว่านี้ ...
โปรแกรมเมอร์ใหม่ที่ใช้ภาษานี้มีคำถามเดียวกันเสมอ - โปรแกรมเริ่มจากวิธีการหลักหรือไม่? ใช่คุณมีสิทธิ์ในกรณีนี้; แอพ IOS เริ่มจากวิธีการหลัก
ชั้นเรียนหลักของคุณเรียกใช้ฟังก์ชันด้านล่าง:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain เริ่มการทำงานของ Cocoa Touch run loop และโครงสร้างพื้นฐานของแอพซึ่งสร้างUIApplication
วัตถุ แอปพลิเคชันของเราต้องการเนื้อหาดังนั้นวัตถุประสงค์ -c ใช้ผู้รับมอบสิทธิ์ในการจัดการเรื่องนี้ นั่นเป็นเหตุผลที่เราเรียกว่า AppDelegate (ทำหน้าที่เป็นตัวแทนของUIApplication
) เราใช้วิธีการทางเลือกบางอย่างของผู้รับมอบสิทธิ์นั้นและจะทำงานตามนั้น