我有一个关于移除观察者的基本问题。
我有一个 ViewController 父类,它由 3 个 ViewController 子类继承。 例如。 BookVC -> BookHotelVC, BookFlightVC, BookTrainVC
在这里,我在父类的 viewDidLoad
中添加了一个观察者(我在子 ViewControllers 中做 [super viewDidLoad]
),它通知在父类中编写的方法。我的代码-
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(BookingCompleted:) name:@"BookingCompleted" object:nil];
现在我想在我离开任何子 ViewController 时删除观察者,但我不能在每个子的 dealloc
中编写 [super dealloc]
ViewController,因为 ARC 不允许这样做。
如何删除已设置的观察者?因为每当我移动到子 ViewController 时,都会添加一个新的观察者,这会导致奇怪的事情(比如,调用该方法两次/三次...... - 调用警报两次/三次......)。
请提出建议。
最佳答案
删除 dealloc
中的观察者是可以的,不要调用 [super dealloc]
(如你所见,启用 ARC,编译器不会让你这样做),只需写:
- (void)dealloc {
[self removeYourObservers];
}
关于iOS - 使用 dealloc 删除观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773229/