最好在 NSNotificationCenter 中调用选择器方法 ViewWillAppear
Is good to call selector method ViewWillAppear in NSNotificationCenter
我想知道在NSNotificationCenter defaultCenter中调用viewWillAppear:
方法好不好
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(viewWillAppear:) name:UIApplicationDidBecomeActiveNotification object:nil];
或
-(void)setUpInitialization{
// dump code here in ViewWillAppears.
}
调用方法setUpInitialization
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(setUpInitialization) name:UIApplicationDidBecomeActiveNotification object:nil];
如果直接调用viewWillAppear
不是很好的实现方式吗?
否.
viewWillAppear
是一个 template method,OS 会为你调用它,你不应该自己手动调用它。
在视图消失之前,调用 viewWillAppear
在 UIViewController
的 lifecycle 中被调用两次会破坏层次结构,这可能会导致一些非常奇怪的行为。
调试您自己的 UIViewController
子类或任何子类将是一场噩梦。
正如您所建议的那样,使用 setUpInitialization()
函数执行第二个选项,并在收到 UIApplicationDidBecomeActiveNotification
.
时执行所有操作
我想知道在NSNotificationCenter defaultCenter中调用viewWillAppear:
方法好不好
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(viewWillAppear:) name:UIApplicationDidBecomeActiveNotification object:nil];
或
-(void)setUpInitialization{
// dump code here in ViewWillAppears.
}
调用方法setUpInitialization
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(setUpInitialization) name:UIApplicationDidBecomeActiveNotification object:nil];
如果直接调用viewWillAppear
不是很好的实现方式吗?
否.
viewWillAppear
是一个 template method,OS 会为你调用它,你不应该自己手动调用它。在视图消失之前,调用
viewWillAppear
在UIViewController
的 lifecycle 中被调用两次会破坏层次结构,这可能会导致一些非常奇怪的行为。调试您自己的
UIViewController
子类或任何子类将是一场噩梦。
正如您所建议的那样,使用 setUpInitialization()
函数执行第二个选项,并在收到 UIApplicationDidBecomeActiveNotification
.