iOS Redis 订阅、退订的正确姿势

在使用 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];
            
       });

你可能感兴趣的:(iOS Redis 订阅、退订的正确姿势)