5

tôi thiết lập một quan sát thông báo trong phương pháp điều khiển quan điểm của tôi init như vậy:Tôi nên xóa người quan sát thông báo ở đâu?

[[NSNotificationCenter defaultCenter] 
        addObserver:self 
        selector:@selector(saveState) 
        name:UIApplicationWillResignActiveNotification 
        object:nil]; 

đâu là nơi tốt nhất để gọi removeObserver:name:object: cho thông báo này. Tôi hiện đang gọi nó theo phương pháp dealloc của mình, nhưng muốn biết liệu điều đó có thể gây ra sự cố hay không.

Trả lời

8

Không, bạn đã hiểu đúng. dealloc là vị trí chính xác để xóa người quan sát thông báo (trừ khi bạn có một số lý do cụ thể cần phải xóa người quan sát trước đó).

+0

Cảm ơn điều này, rất vui được xác nhận. –

+0

Bạn có thể vui lòng đăng tham chiếu đến tài liệu chính thức không. – rraallvv

1

Bạn luôn có thể xóa người quan sát trong viewWillDisappear: hoặc khi bạn sử dụng xong và không cần đến nó, bạn có thể đặt nó trong một hàm.

+0

Trừ khi chế độ xem sẽ xuất hiện lại. Tôi nghĩ rằng cách tiếp cận của bạn sẽ hoạt động nếu tôi bắt đầu người quan sát thông báo trong 'viewWillAppear:'. –

1

Nếu -saveState chỉ cần thực hiện một lần khi hoạt động, sau đó bạn có thể removeObserver bên trong -saveState.

+0

Có lẽ, anh ta sẽ muốn lưu lại nếu ứng dụng đó hoạt động và sau đó từ chức hoạt động trở lại. –

+0

Bạn nói đúng. Tôi cho rằng anh ta sẽ đăng ký làm người quan sát lần nữa khi ứng dụng hoạt động. – AechoLiu

+0

Tôi chỉ sử dụng 'saveState' làm ví dụ, nhưng có lẽ nó sẽ cần được gọi lại nhiều lần (ví dụ khi ứng dụng sẽ nhập vào nền) vì vậy tôi thích sử dụng' dealloc' tốt hơn. –

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