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];
            
       });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。