2013-02-02 22 views
6

nhanh câu hỏi:Loại bỏ quan sát viên của NSNotificationCenter trong Singleton Objective C

Tôi có một lớp singleton mà là một thành viên trong vài NSNotifications. Kể từ khi Singletons kéo dài tuổi thọ của ứng dụng.

Tôi có phải thực hiện

[NSNotificationCenter defaultCenter] removeObserver:self] 

Trong lớp singleton của tôi?

Làm cách nào để xử lý trung tâm NSNotification trong Singletons trong iOS?

Cảm ơn

+0

bản sao có thể có của [Nếu thêm người quan sát cho thông báo trong AppDelegate, tôi có cần phải xóa nó đi không?] (Http://stackoverflow.com/questions/9560419/if-add-an-observer-for- a-notification-in-the-appdelegate-do-i-need-to-bother-re) –

Trả lời

9

Không, bạn không cần phải ngừng quan sát trong trường hợp này. Thời gian duy nhất mà bộ nhớ được sử dụng bởi một Singleton thực sự sẽ bao giờ được deallocated là khi chương trình thoát. Khi chương trình thoát, nó đi trước và deallocates tất cả của bộ nhớ và tài nguyên đang được sử dụng anyway.

+0

Cảm ơn bạn đã làm rõ – banditKing

+0

Vui vì tôi có thể giúp! – lnafziger

0

Nếu bạn muốn người hát đơn của bạn nghe thông báo trong suốt ứng dụng của bạn thì không cần phải xóa thông báo đó.

Nếu bạn muốn điều đó vào thời điểm nhất định singleton bạn nên ngừng nhận thông báo sau đó bạn có thể thêm một phương pháp trong singleton của bạn và có thể gọi nó là nơi cần thiết

- (void)removeObserver { 
    [[NSNotificationCenter defaultCenter] removeObserver:self] ; 
} 
2

Just for Memory sake, bạn đúng cách nên loại bỏ nó trong -dealloc.

+0

Như tôi đã chỉ ra trong câu trả lời của tôi, trong một singleton bộ nhớ sẽ được gỡ bỏ khi chương trình thoát anyway .... Toàn bộ điểm của một singleton là vẫn còn trong bộ nhớ miễn là chương trình đang chạy. – lnafziger

+0

điều này sẽ phục vụ bộ nhớ của nhà phát triển nếu tại một số thời gian lớp học sẽ được thay đổi để sử dụng không singleton – rsc

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