Chúng tôi có phải gửi removeObserver:
một cách rõ ràng cho các đối tượng đã được thêm làm người quan sát cho một số NSNotificationCenter
trước đây không?Trong ARC, chúng ta có cần gửi removeObserver: rõ ràng không?
Tôi hơi bối rối và không thể tìm thấy câu trả lời chính xác cho việc này.
Vui lòng cung cấp cho tôi chi tiết, về điều này bao gồm lý do tại sao chúng tôi cần removeObserver một cách rõ ràng và tại sao trình biên dịch không đặt nó ngầm trong lớp/ứng dụng?
Sau đó, tại sao ARC không đề phòng điều này? Giống như nó đặt [... phát hành]; tại sao nó không đặt [... removeObserver: ...]?/ –
Tất nhiên NSNotificationCenter biết ai đang quan sát: Nó phải chuyển tiếp các thông báo, sau khi tất cả. Dường như họ có thể đã sử dụng các tham chiếu yếu bằng 0 để đảm bảo rằng các thông báo không được gửi tới các nhà quan sát tự do. Nhưng tôi đã thực hiện một bản demo nhanh chỉ để kiểm tra kỹ và nó có bị sập nếu bạn không gọi removeObserver: trong dealloc. Dang. – davehayden
Nó không cần thiết vì có thể có một tham chiếu yếu cho người quan sát, nhưng trừ khi Apple giải thích rõ ràng rằng nó không cần thiết, nó là cần thiết. Có lẽ một yêu cầu tính năng chúng tôi cần phải thực hiện. –