fan*_*ard 23 iphone cocoa-touch objective-c
我曾经addObserver在viewDidLoad:和removeObserver中dealloc:.码:
- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(refreshData)
                                                 name:AnyNotification
                                               object:nil];
}
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:AnyNotification
                                                  object:nil];
}
但据一些文章说,最好是addObserver在viewDidAppear:和removeObserver中viewDidDisappear:.码:
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(refreshData)
                                                 name:AnyNotification
                                               object:nil];
}
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:AnyNotification
                                                  object:nil];
}
那么,addObserver/removeObserver更好的方法是什么?
Saa*_*aad 21
这取决于您的场景,通常最好的方法是添加viewDidLoad和删除in dealloc和in viewDidUnload,但是在某些情况下,当您在不同的类中使用相同的方法(如UI效果)并且想要使用通知仅调用当前屏幕的方法时,那么您将必须添加观察者dealloc并将其删除viewWillAppear或viewWillDisappear/viewDidAppear