升级到 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 中的子模块尚未更新。这样做纠正了错误。
升级到 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 中的子模块尚未更新。这样做纠正了错误。