Closed YearRen closed 5 years ago
@YearRen 你可以看下断点看下AFNetworking库里面的AFURLSessionManager的232行的代码 responseObject = [manager.responseSerializer responseObjectForResponse:task.response data:data error:&serializationError];
这里会根据不同类型的responseSerializer(AFHTTPResponseSerializer、AFJSONResponseSerializer、AFXMLParserResponseSerializer...)返回不同类型的对象
这里会回调到CTNetworking中CTApiProxy中的这里:
/** 这个函数存在的意义在于,如果将来要把AFNetworking换掉,只要修改这个函数的实现即可。 */
- (NSNumber *)callApiWithRequest:(NSURLRequest *)request success:(CTCallback)success fail:(CTCallback)fail
{
// 跑到这里的block的时候,就已经是主线程了。
__block NSURLSessionDataTask *dataTask = nil;
dataTask = [[self sessionManagerWithService:request.service] dataTaskWithRequest:request
uploadProgress:nil
downloadProgress:nil
completionHandler:^(NSURLResponse * _Nonnull response, NSData * _Nullable responseData, NSError * _Nullable error) {
所以,返回类型不能统一
这里是不需要做统一的
因为你不能确保所有公司的所有API service都是返回json格式,具体以什么格式给到外面,由对应Service Protocol的实现来决定的