• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:23:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个下载管理器,当数据准备好时,它会异步调用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap