OGeek|极客世界-中国程序员成长平台

标题: iphone - 将分配与委托(delegate)一起使用 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 10:23
标题: iphone - 将分配与委托(delegate)一起使用

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

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

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

谢谢



Best Answer-推荐答案


听起来好像您以错误的方式实现了委托(delegate)。

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

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

- (void)dealloc
{
    downloadManager.delegate = nil;
    ...
    [super dealloc];
}

现在下载管理器可以毫无问题地检查它自己的实例变量(委托(delegate))是否存在非 nil 等。

关于iphone - 将分配与委托(delegate)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661343/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4