升级到 Xcode 7 后 AFNetworking 出错

Error in AFNetworking following upgrade to Xcode 7

升级到 Xcode 7 (7A21B) 后,在 AFURLSessionManager.m 中构建我当前的项目时抛出 AFNetworking 错误。我已将 AFNetworking 作为子模块链接到 Git 中,因此它会定期更新。

错误是

AFURLSessionManager.m:288:87: Null passed to a callee that requires a non-null argument

负责的线路:

        NSURLSessionDataTask *dataTask = [[NSURLSession sessionWithConfiguration:nil] dataTaskWithURL:nil];

显然,nil 参数需要替换为值,或者实例化 dataTask 对象的方法需要更改,但我对 AFNetworking 不够熟悉,无法自己进行更改。

这是整个方法:

+ (void)initialize {
    if ([NSURLSessionTask class]) {
        NSURLSessionDataTask *dataTask = [[NSURLSession sessionWithConfiguration:nil] dataTaskWithURL:nil];
        Class taskClass = [dataTask superclass];

        af_addMethod(taskClass, @selector(af_resume),  class_getInstanceMethod(self, @selector(af_resume)));
        af_addMethod(taskClass, @selector(af_suspend), class_getInstanceMethod(self, @selector(af_suspend)));
        af_swizzleSelector(taskClass, @selector(resume), @selector(af_resume));
        af_swizzleSelector(taskClass, @selector(suspend), @selector(af_suspend));

        [dataTask cancel];
    }
}

有什么方法可以解决这个错误?

树解决方案。使用共享会话:

NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithURL:nil];

或决定配置。您会在后台发送文件还是仅当您的应用程序在前台时才发送文件?将 nil 替换为

[NSURLSessionConfiguration defaultSessionConfiguration]

或与

[NSURLSessionConfiguration  backgroundSessionConfigurationWithIdentifier:@"My Identifier"]

或者直接使用 NSURLSession 而不是过时的第三方框架。

这是一个简单的错误。感谢 Quentin 强调 Git 中的子模块尚未更新。这样做纠正了错误。