在使用 CocoaRedis 的时候,如果在退订频道的同时立即去重新订阅频道,会报异常在订阅的回调里。是因为退订还没完全成功的时候,就重新订阅导致的。
iOS 的解决方案是将操作添加到一个串行队列同步执行,执行完退订操作完成之后,再重新订阅。小伙伴们可以留意下。
安卓那边的解决方案也类似,只要保证退订操作执行完之后,再重新订阅即可。
__weak typeof(self) weakSelf = self;
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_sync(concurrentQueue, ^(){
__strong typeof(weakSelf) strongSelf = weakSelf;
//回调或者说是通知主线程刷新,
[[strongSelf.redis unsubscribe] then:^id(id value) {
// Remove our observer and disconnect from Redis server.
[[NSNotificationCenter defaultCenter] removeObserver: strongSelf.myObject];
return [strongSelf.redis quit];
}];
[NSThread sleepForTimeInterval:1];
[self setupRedisConted];
});
网友评论