菜鸟教程小白 发表于 2022-12-13 10:23:57

iphone - 将分配与委托(delegate)一起使用


                                            <p><p>我有一个下载管理器,当数据准备好时,它会异步调用 viewController 的委托(delegate)方法,但是如果用户按下返回(viewController 被删除并释放),下载管理器会尝试向未定义的委托(delegate)发送消息。
为了避免这种情况,我试图在数据准备好时检查委托(delegate),以确保它不是 nil 并响应我试图调用的选择器。但是当我尝试检查它是否为 nil 时会引发异常。</p>

<p>我使用不保留的分配属性定义了委托(delegate)。</p>

<p>我应该如何检查以避免委派未定义的 Controller ?</p>

<p>谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>听起来好像您以错误的方式实现了委托(delegate)。 </p>

<p>您的下载管理器应该包含一个名为例如的实例变量。 <code>委托(delegate)</code>。在初始化下载管理器之后或期间,viewController 将自己设置为该下载管理器的委托(delegate) - 例如<code>downloadManager.delegate = self;</code></p>

<p>一旦卸载/释放,您的 viewController 应该将那个确切的值归零 - 有点像 `</p>

<pre><code>- (void)dealloc
{
    downloadManager.delegate = nil;
    ...
    ;
}
</code></pre>

<p>现在下载管理器可以毫无问题地检查它自己的实例变量(委托(delegate))是否存在非 nil 等。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 将分配与委托(delegate)一起使用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8661343/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8661343/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 将分配与委托(delegate)一起使用