ios - 我应该把 NSNotification 中的 removeObserver 放在哪里
<p><p>我有三个 <code>viewControllers</code>,我正在尝试从 <code>viewController</code> 3 向 <code>viewController</code> 1 和 2 发送通知。我认为最好的方法是使用 <code>NSNotification</code>。到目前为止,这是我所拥有的:</p>
<p><strong>在 C 类中</strong> - 发布通知</p>
<pre><code>[ postNotficationName:@"Updated "object:self];
</code></pre>
<p>B类</p>
<p><strong>在 A 类和 B 类中</strong> - 首先注册通知</p>
<pre><code>// viewDidLoad
[ addObserver:self selector:@selector(handleUpdate:) name:@"Updated" object:nil];
-(void)handleUpdate:(NSNotification *)notification {
NSLog(@"recieved");
}
</code></pre>
<p>到目前为止,这有效。但是当我在 A 类和 B 类中注销它时:</p>
<pre><code>- (void)viewWillDisappear:(BOOL)animated {
[ removeObserver:self];
}
</code></pre>
<p><code>handleUpdate</code> 方法没有被调用。所以明显的问题是当我 <code>removeObserver's</code> 获取 <code>notification</code> 时。</p>
<p>我的问题是,如果到目前为止我所做的一切都是正确的,为什么当我删除 <code>removeObserver</code> 时它不起作用?如果不正确,我在哪里可以<code>removeObserver's</code>?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>你所做的一切都是正确的。这就是通知的工作方式。
如果您的 A、B 类总是需要处理更新,您将不会删除观察者。
因为您在 viewDidLoad 中添加了“addObserver”。这意味着你只 addObserver 一次。
正常的错误是你在“viewWillAppear”或“viewDidAppear”中添加了“addObserver”,它会在类中添加不止一次的观察者。然后,您必须在 viewDidDisappear 中删除Observer。</p></p>
<p style="font-size: 20px;">关于ios - 我应该把 NSNotification 中的 removeObserver 放在哪里,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/30905896/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/30905896/
</a>
</p>
页:
[1]