Vì vậy, tôi đã có một dự án hỗ trợ iOS 4, vì vậy tất cả IBOutlets của tôi là __unsafe_unretained
thậm chí IBOutlets nằm trong nib nhưng bên ngoài giao diện chính của trình điều khiển (Chế độ xem riêng trong cùng một ngòi) và tất cả đều hoạt động tốt.Sự khác biệt giữa yếu và không an toàn_unretained
Vì vậy, đã đến lúc và bây giờ là khách hàng muốn chỉ hỗ trợ iOS 5 nên nhóm chúng tôi đã thay đổi tất cả các __unsafe_unretained
IBOutlets cho __weak IBOutlets
nhưng bây giờ IBOutlets mà không phải là bên trong giao diện chính được thiết lập để nil
(trừ viewdidload
) để chúng tôi không thể thêm chúng sau này. Nếu tôi nghĩ về nó, nó có ý nghĩa bởi vì nếu không có quan điểm (xem chính) là giữ lại những IBOutlets họ nên được deallocated và zeroed (Tôi không biết nếu đó là từ chính xác), vì vậy giải pháp là để loại bỏ các __weak
từ những IBOutlets
Nhưng những gì không có ý nghĩa đối với tôi là tại sao các hành vi khác nhau giữa unsafe_unretained
và weak
, trong đầu tôi những unsafe_unretained
người nên được deallocated và khi ứng dụng cố gắng truy cập chúng, họ phải chỉ tham chiếu không hợp lệ và sau đó ứng dụng sẽ bị lỗi.
Tôi nghĩ rằng không an toàn__unretained là giống như yếu nhưng không có zeroing.
Tôi có thiếu gì đó ở đây không?
Cảm ơn.
Bạn là chính xác. unsafe_unretained không có tham chiếu. – Francesco