美文网首页
通过AFHTTPSessionManager+RACSuppor

通过AFHTTPSessionManager+RACSuppor

作者: 流沙3333 | 来源:发表于2017-03-01 11:16 被阅读82次

转载自: http://blog.csdn.net/lgm252008/article/details/50736950

在RAC实际使用时发现RAC有一个在网络请求上很严重的问题,就是同一个网络url刷新时所创建的信号源

内部请求会被执行两次或多次的现象,通过代理Charles很容易看到,查了相关资料有说过该问题但大多数并没有直接指出应怎么处理,

现将

AFHTTPRequestOperationManager和 AFHTTPSessionManager相关代码如下(得修改原码)

- (RACSignal *)rac_requestPath:(NSString *)path parameters:(id)parameters method:(NSString *)method {

return [RACSignal createSignal:^(id subscriber) {

NSURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString] parameters:parameters error:nil];

AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:nil failure:nil];

RACSignal *signal = [operation rac_overrideHTTPCompletionBlock];

[self.operationQueue addOperation:operation];

[signal subscribe:subscriber];

return [RACDisposable disposableWithBlock:^{

[operation cancel];

}];

}];

}

将后面加上 replay 修改为即可解决:

- (RACSignal *)rac_requestPath:(NSString *)path parameters:(id)parameters method:(NSString *)method {

return [[RACSignal createSignal:^(id subscriber) {

NSURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString] parameters:parameters error:nil];

AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:nil failure:nil];

RACSignal *signal = [operation rac_overrideHTTPCompletionBlock];

[self.operationQueue addOperation:operation];

[signal subscribe:subscriber];

return [RACDisposable disposableWithBlock:^{

[operation cancel];

}];

}] replay];

}

相关文章

  • 通过AFHTTPSessionManager+RACSuppor

    转载自: http://blog.csdn.net/lgm252008/article/details/50736...

  • 通过啦通过啦

    今天算是成了一件大事吧,暂定下周一,所以要记得明天请假。 今天到账了一点,把想好的捐款捐了,小姑娘怪不容易的。 晚...

  • 通过

    离离张贺原上草

  • 通过

    2018年10月30日 耗时4个月的考试终于出结果了,通过了! 看到结果的那一刻,内心的狂喜,激动,真是难以言表,...

  • 通过

    sel是通过取得sel来直接调方法, self来执行方法是通过消息传递机制来调用方法

  • 通过

    心心念念的教师资格证终于通过了,这场考试熬了近三年。如果你不认真,可能还要继续熬。有些事情就是这样子,你认真对待它...

  • 通过

    看着用毛笔宣纸写的“通过”二字,我的心中长长一个舒。可以想像你写时的畅快淋漓。笔笔生峰,一气呵成,工整端庄,妥...

  • 通过

    通过 严肃 单独穿越一条漫长的林间小道 闻到一股落叶的芬芳 让人觉得是飞过了小道 没有累的感觉 一个字——爽

  • 通过

    一个半月,拿到心理咨询师认证,向能够营业迈进。

  • 通过事管人,通过人管事

    “人”和“事”两方面管理 通过事管人,通过人管事 清楚整个团队的关键目标和任务 一是告诉他们,团队的阶段性目标是什...

网友评论

      本文标题:通过AFHTTPSessionManager+RACSuppor

      本文链接:https://www.haomeiwen.com/subject/gkeqgttx.html