【发布时间】:2015-11-06 11:37:47
【问题描述】:
我在标签栏应用程序的导航堆栈中发布通知表单一个视图控制器。我正在删除 dealloc 中的观察者。
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ArtworkAddedReloadAllArtworks" object:nil]; in dealloc correctly.
我正在注销
[[self tabBarController] dismissViewControllerAnimated:YES completion:nil];
但问题是当我重新登录时,在通知中心添加了两次相同的通知
ArtworkAddedReloadAllArtworks, 0x12ff698, 0x7a490e00, 1400
ArtworkAddedReloadAllArtworks, 0x12ff698, 0x7a431800, 1400
在通知中心创建了 2 个视图控制器实例,并且通知添加了两次两个不同的对象,我如何取消注册通知?我无法从 viewDidDisappear 中删除,因为我从其他控制器发布通知。dealloc 在登录后调用。
如何制作 nil 视图控制器(在登录前首先创建)和他的观察者?
提前致谢。
【问题讨论】:
-
显示添加观察者的代码。这会有所帮助。
-
我认为 dealloc 没有被调用。调试它来检查
-
[[NSNotificationCenter defaultCenter] addObserver:self 选择器:@selector(artworkAddedNotificationReceived:) name:@"ArtworkAddedReloadAllArtworks" object:nil];我重新登录后调用dealloc
-
你在哪里添加观察者?
-
在 viewDidLoad 方法的同一个类中。并从另一个班级发布通知。在我注销之前它工作正常。重新登录后,中心显示相同通知的 2 视图控制器如上所示。 ...请帮助我
标签: ios objective-c swift notifications