IBOutlet
nên mạnh mẽ, vì lý do hiệu suất. Xem Tham khảo bảng phân cảnh, IBOutlet mạnh, Dock cảnh trong iOS 9
Như đã giải thích trong đoạn này, các lối ra cho các cuộc phỏng vấn của khung nhìn của trình điều khiển khung nhìn có thể yếu, bởi vì các cuộc phỏng vấn này đã được sở hữu bởi đối tượng cấp cao nhất của tệp nib. Tuy nhiên, khi một Outlet được định nghĩa là một con trỏ yếu và con trỏ được đặt, ARC gọi hàm thời gian chạy:
id objc_storeWeak(id *object, id value);
Điều này thêm con trỏ (đối tượng) vào một bảng bằng cách sử dụng giá trị đối tượng làm khóa. Bảng này được gọi là bảng yếu. ARC sử dụng bảng này để lưu trữ tất cả các con trỏ yếu của ứng dụng của bạn. Bây giờ, khi giá trị đối tượng được giải phóng, ARC sẽ lặp lại trên bảng yếu và đặt tham chiếu yếu thành nil. Ngoài ra, ARC có thể gọi:
void objc_destroyWeak(id * object)
Sau đó, đối tượng không được đăng ký và objc_destroyWeak gọi lại:
objc_storeWeak(id *object, nil)
Việc giữ sách này được liên kết với một tài liệu tham khảo yếu có thể mất 2 lần 3 lần so với việc phát hành một tài liệu tham khảo mạnh. Vì vậy, một tham chiếu yếu giới thiệu một chi phí chung cho thời gian chạy mà bạn có thể tránh bằng cách chỉ cần xác định các cửa hàng là mạnh.
Kể từ Xcode 7, nó gợi ý strong
Nếu bạn xem phiên WWDC 2015 407 Thực hiện Thiết kế giao diện người dùng trong Trình tạo giao diện , nó sẽ gợi ý (bản sao từ http://asciiwwdc.com/2015/simes/407 )
Và tùy chọn cuối cùng tôi muốn chỉ ra là loại lưu trữ, có thể mạnh hoặc yếu.
Nói chung, bạn nên làm cho ổ cắm của mình mạnh mẽ, đặc biệt nếu bạn đang kết nối một ổ cắm với chế độ xem phụ hoặc với một ràng buộc không phải lúc nào cũng được giữ lại bởi hệ thống phân cấp chế độ xem.
Lần duy nhất bạn thực sự cần làm cho một ổ cắm yếu là nếu bạn có chế độ xem tùy chỉnh tham chiếu thứ gì đó sao lưu phân cấp chế độ xem và nói chung không được khuyến nghị.
Vì vậy, tôi sẽ chọn mạnh mẽ và tôi sẽ nhấp vào kết nối sẽ tạo ra ổ cắm của tôi.
IBOutletCollection()
không đượcweak
, nếu không nó sẽ trả vềnil
.