2011-08-30 30 views
44

Nếu đọc của tôi về "Zeroing Weak References" writeup của Mike Ash là chính xác, tham chiếu yếu giống như tài liệu tham khảo assign mà không có ARC. Tuy nhiên, nếu đối tượng tham chiếu được deallocated, thay vì nhận được một "con trỏ lơ lửng" (có nghĩa là một con trỏ trỏ đến một đối tượng deallocated), con trỏ được thiết lập để nil.Không tham chiếu yếu trong ARC

Điều này có đúng không và điều này có xảy ra với bất kỳ thuộc tính nào được đánh dấu weak hoặc assign (khi ARC đang hoạt động) không?

Nếu điều này đúng, điều này sẽ loại bỏ rất nhiều SIGABRT.

Trả lời

38

Chủ yếu là đúng, nhưng assign thuộc tính vẫn được xử lý giống như trước đây, chỉ có weak các giá trị đó là zeroing. Một lưu ý khác là các tham chiếu yếu zeroing chỉ có sẵn trong Mac OS X ≥ 10.7 và iOS ≥ 5. Trong khi phần còn lại của ARC được quay lại 10.6 và iOS 4, các tham chiếu yếu không thể sử dụng được trên các hệ điều hành này.

+6

Cảm ơn vì @cobbal. Ít nhất trong phiên bản XCode 4.2 beta, bạn KHÔNG THỂ sử dụng 'weak' trong khai báo thuộc tính nếu mục tiêu triển khai của bạn là

+1

Cảm ơn bạn @Yar, tôi đã nhận được lỗi đó và không biết nó đến từ đâu! – Pascal

+1

Điểm tuyệt vời về khả năng tương thích ngược. – jlehr

Các vấn đề liên quan