Việc thêm một người quan sát có tăng số lượng giữ lại của một đối tượng không? Nếu có, ARC có xử lý việc xóa người quan sát này không? Nếu không, tôi nên loại bỏ người quan sát ở đâu?NSNotificationCenter removeObserver trong ARC có cần thiết không?
Trả lời
Bạn nên xóa người quan sát ngay cả khi bạn sử dụng ARC
. Tạo một phương pháp dealloc
và loại bỏ có ..
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Nếu bạn thấy phương pháp này bạn không cần phải gọi [super dealloc];
đây, chỉ có các phương pháp mà không super dealloc cần thiết.
CẬP NHẬT cho Swift
Bạn có thể loại bỏ quan sát viên trong deinit phương pháp nếu bạn đang viết mã trong nhanh chóng.
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
Một câu hỏi: Khi bạn gọi addObserver, NSNotificationCenter có giữ lại người quan sát hay không? Cảm ơn. – Ricardo
Nó không được giữ lại! – Pei
trung tâm thông báo sẽ không giữ tài liệu tham khảo mạnh mẽ của người quan sát, do đó không cần phải xóa chúng một cách rõ ràng trong 'ARC'. – holex
- 1. Trong ARC, chúng ta có cần gửi removeObserver: rõ ràng không?
- 2. removeObserver không làm việc
- 3. truy vấn addobserver/removeobserver
- 4. Tôi có cần giải phóng CGColorSpaceRef trong ARC không?
- 5. Khi nào cần tạo NSNotificationCenter tùy chỉnh?
- 6. Self.iVar có cần thiết cho các thuộc tính mạnh mẽ với ARC không?
- 7. removeObserver: forKeyPath: trong dealloc
- 8. nơi tôi nên đặt removeObserver trong AppDelegate.m, ios
- 9. Mutexes có cần thiết trong javascript không?
- 10. KillTimer có cần thiết không?
- 11. Bạn có cần phát hành hàng đợi GCD trong ARC trong iOS 6.0 không?
- 12. @autoreleasepool không có ARC?
- 13. Cocos2d có hỗ trợ ARC không?
- 14. Có phải dispatch_async (dispatch_get_main_queue(), ...) cần thiết trong trường hợp này không?
- 15. CDATA có thực sự cần thiết không?
- 16. MongoDB - DBREF có cần thiết không?
- 17. Tham chiếu System.Web.Silverlight có cần thiết không?
- 18. Đối số textViewResourceId có cần thiết không?
- 19. Khả năng hiển thị của Apple mà không cần ARC
- 20. Có phải "tự" yếu trong một phương thức trong ARC không?
- 21. KillTimer có thực sự cần thiết không?
- 22. Tiền tố khtml có cần thiết không?
- 23. Tôi có cần từ khóa ARC cho các thuộc tính mà tôi không tổng hợp không?
- 24. Dấu chấm phẩy có cần thiết trong SQL không?
- 25. CultureInfo.CurrentCulture có thực sự cần thiết trong String.Format() không?
- 26. Lặp lại có cần thiết trong đoạn mã sau không?
- 27. Khóa chính có cần thiết trong SQL Server không?
- 28. Nhà máy Proxy có cần thiết trong NHibernate không?
- 29. Khóa có cần thiết trong tình huống này không?
- 30. Sử dụng mã không phải ARC trong dự án có hỗ trợ ARC - Thêm Facebook
Xem [câu hỏi này] (http://stackoverflow.com/q/13911651/730701). – Adam
Điều này cũng giống như tôi đã hỏi vài tháng trở lại :) –
Tôi nghĩ rằng nó hợp lệ hỏi lại những câu hỏi này khi tôi muốn tìm câu trả lời mới nhất cho các câu hỏi trong trường hợp sự khôn ngoan nhận thức đã thay đổi. – amergin