gpt4 book ai didi

iphone - 使用 NSNotificationCenter addObserver/removeObserver 的更好方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:12:01 25 4
gpt4 key购买 nike

我曾经在viewDidLoad:addObserver,在dealloc:中使用removeObserver。代码:

- (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];
}

但是根据一些文章说,最好在viewDidAppear:addObserver和在viewDidDisappear:removeObserver .代码:

- (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 的更好方法是什么?

最佳答案

这取决于您的场景,通常最好的方法是在 viewDidLoad 中添加并在 deallocviewDidUnload 中删除(在 iOS 中已弃用) 9.0, 仅使用dealloc), 但有些情况下你在不同的类中有相同的方法,比如 UI 效果,并且想使用通知只调用当前屏幕的方法,那么你必须添加观察者viewWillAppear 并在 viewWillDisappearviewDidAppear/viewDidDisappear

中移除

编辑:来自评论的注释,感谢@honey。

虽然从 iOS 9 开始,您不再需要关心移除观察者。参见 Apple release notes : "在 OS X 10.11 和 iOS 9.0 中,NSNotificationCenter 和 NSDistributedNotificationCenter 将不再向注册的观察者发送通知,这些观察者可能会被释放......

关于iphone - 使用 NSNotificationCenter addObserver/removeObserver 的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com