V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
firecracker2
V2EX  ›  iOS

NSURLSession 引用维护的问题

  •  
  •   firecracker2 · 2016-09-23 17:41:02 +08:00 · 1761 次点击
    这是一个创建于 2782 天前的主题,其中的信息可能已经有所发展或是发生改变。
    - (void)request {
        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
        NSURL *URL = [NSURL URLWithString:@"http://lf.snssdk.com/neihan/service/tabs"];
        NSURLSessionDataTask *dataTask = [session dataTaskWithURL:URL];
        [dataTask resume];
    }
    

    执行了这个方法后,并没有引用维护NSURLSession对象,但为什么它还可以正常工作而不会被销毁,底层实现是怎样的呢,哪里有相关内容的介绍?

    第 1 条附言  ·  2016-09-23 18:22:56 +08:00
    对 session 对象执行 invalidate 的方法后,如果这个 session 对象没有其他引用维护后,会被销毁。具体内部如何维护可用的 session 实例,没在文档中找到。
    3 条回复    2016-09-23 19:05:11 +08:00
    wujichao
        1
    wujichao  
       2016-09-23 17:47:32 +08:00
    如果人家内部实现有个单例呢? 或者有个 session pool 供重用呢?
    外面没有引用不代表内部实现没有被其他地方引用吧
    firecracker2
        2
    firecracker2  
    OP
       2016-09-23 17:51:46 +08:00
    @wujichao 用 Allocations 看的话,一开始是没有实例的,执行一次会新增加一个实例。
    DingSoung
        3
    DingSoung  
       2016-09-23 19:05:11 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1784 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:31 · PVG 00:31 · LAX 09:31 · JFK 12:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.