NSNotificationCenter removeObserver: отменяет регистрацию виртуального канала для получения уведомлений о предупреждении памяти?

Я только что наткнулся на проблему в моем приложении: Я протестировал вызовы didReceiveMemoryWarning к UIViewController , включая последующие вызовы для viewDidUnload .

Раньше это нормально работало в старых версиях моего приложения, но теперь не работало в iPhone Simulator: didReceiveMemoryWarning просто больше не вызывается.

Это было вызвано вызовом [NSNotificationCenter defaultCenter] removeObserver: self] в viewWillDisappear (сам является UIVControliew) чтобы отменить регистрацию для некоторых уведомлений жизненного цикла, которые я добавил в viewDidAppear .

Этот глобальный вызов removeObserver: не только удалил мои добавленные уведомления, но и, очевидно, системное уведомление UIApplicationDidReceiveMemoryWarningNotificationController вызвало UIApplicationDidReceiveMemoryWarningNotificationControl Вызывается didReceiveMemoryWarning .

Это поведение является намеренным? Я не смог найти ссылку / документ, в котором указывалось, что вызов removeObserver: внутри UIViewController нарушает стандартную обработку memoryWarning.

12
задан Mogsdad 18 January 2018 в 22:14
поделиться