ios-NSURLSession注意点

当我们在使用 _session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];这个时候注意设置delegate是强引用的也就意味着session是强引用着self的,如果这个时候self中有个属性是session还是强引用的,这样就会造成循环引用。所以这个时候我们就得在适当的时候使session无效。

我们可以这么做

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    //使session做完下载操作之后再使它无效
    [self.session finishTasksAndInvalidate];
    //这里不用设置self.session为nil,因为控制器都销毁了,session肯定也销毁了
 }
我们也可以在适当的时机去添加下面的代码

     //取消操作session一旦无效之后,session无法再次使用
        [self.session invalidateAndCancel];
        //下载完成,再让session无效
        //[self.session finishTasksAndInvalidate];
        //这里让session设置为nil,就是为了防止我们还是要使用session的时候再次下载或者上传或者删除文件的时候程序直接崩溃,所以设置为nil,这里我们session
         self.session = nil;

当我们使用单例创建的session,不需要销毁,因为我们通过shared获得的session无法去设置代理,所以不用担心。

单例的对象一直存储在静态存储区


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值