Trong OS X v10.11 beta release notes là gì, tôi thấy như sau:một "phi yếu zeroing tham khảo"
NSNotificationCenter và NSDistributedNotificationCenter không còn gửi thông báo cho các quan sát viên đã đăng ký có thể được deallocated. Nếu người quan sát có thể được lưu trữ như là một tham chiếu zeroing yếu, lưu trữ cơ bản lưu trữ người quan sát như là một tham chiếu yếu zeroing. Ngoài ra, nếu đối tượng không thể được lưu trữ yếu (vì nó có cơ chế giữ lại/giải phóng tùy chỉnh sẽ ngăn thời gian chạy có thể lưu trữ đối tượng yếu) đối tượng được lưu trữ dưới dạng tham chiếu zeroing không yếu. Điều này có nghĩa là các nhà quan sát không bắt buộc phải hủy đăng ký theo phương thức deallocation của họ. [nhấn mạnh mỏ]
Điều này không có ý nghĩa với tôi. Nếu nó là một tham chiếu không yếu, nó sẽ không phải là một tài liệu tham khảo mạnh mẽ, sau đó? Vì vậy, NSNotificationCenter vẫn sẽ là một chủ sở hữu, vì vậy đối tượng sẽ không deallocate (cho đến khi chưa đăng ký theo cách thủ công), do đó, nó vô nghĩa trong bối cảnh này để nói rằng nó "zeroing".
Nếu điều này đề cập đến một loại tham chiếu __unsafe_unretained
, thì câu hỏi là… làm cách nào NSNotificationCenter tránh nhắn tin cho một zombie?
Đối với một thực hiện ví dụ về các loại swizzling Tôi đang đề cập đến, hãy xem [MAZeroingWeakRef] (https://github.com/mikeash/MAZeroingWeakRef/). –
Câu trả lời rất kỹ lưỡng, và chính xác loại giải thích mà tôi đã hy vọng. Cảm ơn! – natevw