菜鸟教程小白 发表于 2022-12-12 09:34:10

ios - xib通知dealloc错误中的自定义UIView


                                            <p><p>我不知道如何解决这个问题。</p>

<p>我有一个带有 xib 的 Controller(ControllerA)。
在那个xib里面我有一个自定义的UIView(UIViewA)。 UIViewA 在我所有的其他 xib 中作为页脚并加载了 awakeFromNib。</p>

<p>初始化代码如下:</p>

<pre><code>-(void)awakeFromNib

{
    [ loadNibNamed:@&#34;ICOMFooterView&#34; owner:self options:nil];
    ;

    [ addObserver:self selector:@selector(receivedNotification:) name:@&#34;downloadNotification&#34; object:nil];
    ;
}
</code></pre>

<p>在dealloc中:</p>

<pre><code>- (void)dealloc {
    [ removeObserver:@&#34;downloadNotification&#34;];
}
</code></pre>

<p>当我导航到另一个 Controller 并返回时出现问题,它在 UIViewAView 中给了我一个释放异常。我所看到的是,当我返回到我的第一个 Controller 时,会调用 dealloc 并删除观察者......有没有办法在 View 再次出现时初始化通知?</p>

<p>不知道我解释的好不好。</p>

<p>提前谢谢你。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这一行:</p>

<pre><code>[ removeObserver:@&#34;downloadNotification&#34;];
</code></pre>

<p>应该是:</p>

<pre><code>[ removeObserver:self];
</code></pre>

<p>因为参数是作为观察者要移除的对象,而不是通知的名称。</p>

<p>这个错误会导致被释放的 View 不会作为观察者被移除,所以下次发布通知时会崩溃。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - xib通知dealloc错误中的自定义UIView,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23338675/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23338675/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - xib通知dealloc错误中的自定义UIView