IBOutlet
ควรมีความแข็งแกร่งด้วยเหตุผลด้านประสิทธิภาพ ดูการอ้างอิงสตอรี่บอร์ด, IBOutlet ที่แข็งแกร่ง, Scene Dock ใน iOS 9
ตามที่อธิบายไว้ในย่อหน้านี้ช่องทางสู่วิวพร็อพเพอร์ตี้ของวิวคอนโทรลเลอร์อาจไม่รัดกุมเนื่องจากมุมมองย่อยเหล่านี้เป็นของออบเจ็กต์ระดับบนสุดของไฟล์ปลายปากกาอยู่แล้ว อย่างไรก็ตามเมื่อกำหนด Outlet เป็นตัวชี้ที่อ่อนแอและตั้งค่าตัวชี้ ARC จะเรียกใช้ฟังก์ชัน runtime:
id objc_storeWeak(id *object, id value);
เพิ่มตัวชี้ (วัตถุ) ในตารางโดยใช้ค่าวัตถุเป็นคีย์ ตารางนี้เรียกว่าตารางที่อ่อนแอ ARC ใช้ตารางนี้เพื่อเก็บพอยน์เตอร์อ่อนแอทั้งหมดของแอปพลิเคชันของคุณ ตอนนี้เมื่อค่าวัตถุถูกจัดสรรคืน ARC จะวนซ้ำตารางที่อ่อนแอและตั้งค่าการอ้างอิงที่อ่อนแอเป็นศูนย์ หรืออีกวิธีหนึ่งคือ ARC สามารถโทร:
void objc_destroyWeak(id * object)
จากนั้นวัตถุจะไม่ถูกลงทะเบียนและ objc_destroyWeak โทรอีกครั้ง:
objc_storeWeak(id *object, nil)
การเก็บหนังสือเล่มนี้เกี่ยวข้องกับการอ้างอิงที่อ่อนแออาจใช้เวลานานกว่าการอ้างอิงที่คาดเดายาก 2-3 เท่า ดังนั้นการอ้างอิงที่ไม่ดีจะแนะนำค่าใช้จ่ายสำหรับรันไทม์ที่คุณสามารถหลีกเลี่ยงได้โดยเพียงกำหนดช่องทางที่แข็งแกร่ง
ในฐานะของ Xcode 7 มันแสดงให้เห็น strong
หากคุณรับชมเซสชัน WWDC 2015 407 การใช้งานการออกแบบ UI ในตัวสร้างส่วนต่อประสานจะแนะนำ (บันทึกจากhttp://asciiwwdc.com/2015/sessions/407 )
และตัวเลือกสุดท้ายที่ฉันต้องการชี้ให้เห็นก็คือประเภทการจัดเก็บซึ่งอาจจะแข็งแรงหรืออ่อนแอ
โดยทั่วไปคุณควรทำให้ร้านของคุณแข็งแกร่งโดยเฉพาะอย่างยิ่งถ้าคุณกำลังเชื่อมต่อร้านกับมุมมองย่อยหรือข้อ จำกัด ที่จะไม่ถูกเก็บไว้ในลำดับชั้นการดู
ครั้งเดียวที่คุณต้องทำให้ร้านค้าอ่อนแออย่างแท้จริงคือถ้าคุณมีมุมมองที่กำหนดเองที่อ้างอิงบางสิ่งบางอย่างสำรองลำดับชั้นมุมมองและโดยทั่วไปที่ไม่แนะนำ
ดังนั้นฉันจะเลือกที่แข็งแกร่งและฉันจะคลิกเชื่อมต่อซึ่งจะสร้างเต้าเสียบของฉัน
IBOutletCollection()
จะต้องไม่มิฉะนั้นก็จะส่งกลับเป็นweak
nil