我有一个下载管理器,当数据准备就绪时,异步调用viewController的委托方法,但如果用户按回(viewController被删除并释放),下载管理器尝试发送消息未定义的委托。 为了避免这种情况,我试图在数据准备好的时候检查委托,以确保它不是零,并且响应试图调用的选择器。但是当我尝试检查它是否为零时会引发异常。使用与委托分配
我使用assign属性不保留定义委托。
我该如何检查以避免委托未定义的控制器?
谢谢
我有一个下载管理器,当数据准备就绪时,异步调用viewController的委托方法,但如果用户按回(viewController被删除并释放),下载管理器尝试发送消息未定义的委托。 为了避免这种情况,我试图在数据准备好的时候检查委托,以确保它不是零,并且响应试图调用的选择器。但是当我尝试检查它是否为零时会引发异常。使用与委托分配
我使用assign属性不保留定义委托。
我该如何检查以避免委托未定义的控制器?
谢谢
听起来好像你已经错误地实施了委托。
您的下载管理器应该保存一个名为例如delegate
。在初始化下载管理器之后或同时,viewController将自己设置为该下载管理器的委托 - 例如downloadManager.delegate = self;
你的viewController应该为零,一旦卸载,准确的价值/ deallocs - 有点像`
- (void)dealloc
{
downloadManager.delegate = nil;
...
[super dealloc];
}
现在下载管理器可以检查非零等它自己的实例变量(代表)没有任何问题。
我缺少的一点是将委托设置为零,当我的控制器处理。谢谢:) – Arouri