Một trong những ý kiến hàng đầu về Câu hỏi này đặc biệt hỏi:
Tất cả các câu trả lời đều đề cập đến cùng một loại ý tưởng .. nhưng không ai giải thích được tại sao Trình tạo giao diện dường như hoạt động giống nhau nếu bạn KHÔNG bao gồm IBAction / IBOutlet trong nguồn của mình. Có một lý do nào khác cho IBAction và IBOutlet hay bạn có thể bỏ chúng đi không?
Câu hỏi này được NSHipster trả lời tốt:
IBAction
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#ibaction
Đầu năm 2004 (và có lẽ sớm hơn), IBAction không còn cần thiết cho một phương thức được Trình tạo giao diện chú ý. Bất kỳ phương thức nào có chữ ký -(void){name}:(id)sender
sẽ hiển thị trong khung cửa hàng.
Tuy nhiên, nhiều nhà phát triển thấy hữu ích khi vẫn sử dụng kiểu trả về IBAction trong khai báo phương thức để biểu thị rằng một phương thức cụ thể được kết nối bằng một hành động. Ngay cả các dự án không sử dụng Storyboards / XIB cũng có thể chọn sử dụng IBAction để gọi ra các phương thức mục tiêu / hành động.
IBOutlet:
https://nshipster.com/ibaction-iboutlet-iboutletcollection/#iboutlet
Không giống như IBAction, IBOutlet vẫn được yêu cầu để kết nối các thuộc tính trong mã với các đối tượng trong Storyboard hoặc XIB.
Kết nối IBOutlet thường được thiết lập giữa chế độ xem hoặc điều khiển và bộ điều khiển chế độ xem quản lý của nó (điều này thường được thực hiện ngoài bất kỳ IBActions nào mà bộ điều khiển chế độ xem có thể được nhắm mục tiêu để thực hiện bởi bộ phản hồi). Tuy nhiên, IBOutlet cũng có thể được sử dụng để hiển thị một thuộc tính cấp cao nhất, giống như một bộ điều khiển khác hoặc một thuộc tính mà sau đó có thể được truy cập bởi bộ điều khiển xem tham chiếu.