Как видно на this stackoverflow answer оNSNotificationCenter, ViewWillAppear, ViewWillDisappear и ViewDidDisappear
"NSNotificationCenter по отношению к ViewWillAppear и ViewWillDisappear"
Мы указывали в направлении ниже в качестве предпочтительного подхода
"Регистрация уведомления в поле зренияWillAppear и отмена регистрации в представленииWillDisappear кажется чистым и симметричным решением для меня. "
Этот подход также предлагается в this other stackoverflow answer.
Мой вопрос двояко
Почему Apple, AVCam Sample Code в "AAPLCameraViewController.m"
removeObservers
в viewDidDisappear и неviewWillDisappear
, как вышеуказанные ответы предложили.Почему они используют
addObservers
после[super viewWillAppear:animated];
в то время как ониremoveObservers
перед тем[super viewDidDisappear:animated];
кодекса извлеченного из "AAPLCameraViewController.m"
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
dispatch_async(self.sessionQueue, ^{
switch (self.setupResult) {
case AVCamSetupResultSuccess: {
// Only setup observers and start the session running if setup succeeded.
[self addObservers];
[self.session startRunning];
self.sessionRunning = self.session.isRunning;
break;
}
}
- (void)viewDidDisappear:(BOOL)animated {
dispatch_async(self.sessionQueue, ^{
if (self.setupResult == AVCamSetupResultSuccess) {
[self.session stopRunning];
[self removeObservers];
}
});
[super viewDidDisappear:animated];
}