หนึ่งในความเห็นสูงสุดของคำถามนี้ถามโดยเฉพาะ:
คำตอบทั้งหมดพูดถึงแนวคิดประเภทเดียวกัน .. แต่ไม่มีใครอธิบายว่าทำไมตัวสร้างส่วนต่อประสานดูเหมือนจะทำงานได้เหมือนกันถ้าคุณไม่รวม IBAction / IBOutlet ในแหล่งที่มาของคุณ มีเหตุผลอื่นอีกหรือไม่สำหรับ IBAction และ IBOutlet หรือไม่ก็ปล่อยทิ้งไว้ใช่ไหม
คำถามนี้ตอบได้ดีโดย NSHipster:
IBAction
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#ibaction
เร็วเท่าที่ 2004 (และอาจจะเร็วกว่านี้) IBAction ไม่จำเป็นสำหรับวิธีการที่สังเกตโดยตัวสร้างส่วนต่อประสานอีกต่อไป วิธีการใด ๆ ที่มีลายเซ็น-(void){name}:(id)sender
จะปรากฏในบานหน้าต่างสาขา
อย่างไรก็ตามนักพัฒนาหลายคนพบว่ามีประโยชน์ที่จะยังคงใช้ประเภทการคืนค่าของ IBAction ในการประกาศเมธอดเพื่อแสดงว่าวิธีการเฉพาะนั้นเชื่อมต่อกับการกระทำ แม้แต่โครงการที่ไม่ได้ใช้สตอรีบอร์ด / XIB ก็อาจเลือกใช้ IBAction เพื่อเรียกวิธีการเป้าหมาย / การกระทำออกมา
IBOutlet:
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#iboutlet
ซึ่งแตกต่างจาก IBAction, IBOutlet ยังคงต้องการการเชื่อมต่อคุณสมบัติในรหัสกับวัตถุใน Storyboard หรือ XIB
การเชื่อมต่อ IBOutlet มักจะสร้างขึ้นระหว่างมุมมองหรือตัวควบคุมและการควบคุมมุมมองการจัดการ (ซึ่งมักจะทำนอกเหนือจาก IBActions ใด ๆ ที่มุมมองตัวควบคุมอาจถูกกำหนดเป้าหมายให้ดำเนินการโดยผู้ตอบกลับ) อย่างไรก็ตาม IBOutlet ยังสามารถใช้เพื่อแสดงคุณสมบัติระดับบนสุดเช่นตัวควบคุมอื่นหรือคุณสมบัติที่สามารถเข้าถึงได้โดยตัวควบคุมมุมมองอ้างอิง