Pertanyaan sebenarnya adalah mengapa Anda tidak tahu apakah Anda mengamatinya atau tidak.
Jika Anda melakukan ini di kelas objek yang diamati, berhenti. Apa pun yang mengamatinya berharap untuk terus mengamatinya. Jika Anda memotong notifikasi pengamat tanpa sepengetahuannya, mengharapkan hal-hal akan rusak; lebih khusus, berharap kondisi pengamat basi karena tidak menerima pembaruan dari objek yang sebelumnya diamati.
Jika Anda melakukan ini di kelas objek pengamatan, cukup ingat objek mana yang Anda amati (atau, jika Anda hanya mengamati satu objek, apakah Anda mengamatinya). Ini mengasumsikan bahwa pengamatan itu dinamis dan antara dua objek yang tidak berhubungan; jika pengamat memiliki yang diamati, cukup tambahkan pengamat setelah Anda membuat atau menyimpan yang diamati, dan lepaskan pengamat sebelum Anda melepaskan yang diamati.
Menambah dan menghapus objek sebagai pengamat biasanya terjadi di kelas pengamat, dan tidak pernah di objek yang diamati.
addObserver:
dalamviewWillAppear:
dan SejalanremoveObserver:
diviewWillDisappear:
, panggilan yang benar dipasangkan. Saya harus membuat perbaikan cepat jadi saya akan mengimplementasikan solusi try-catch dan meninggalkan komentar untuk menyelidiki penyebabnya lebih lanjut.