首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决ObjCHiredis redis中的setUp块问题

如何解决ObjCHiredis redis中的setUp块问题
EN

Stack Overflow用户
提问于 2013-01-19 08:19:08
回答 1查看 150关注 0票数 1

当我使用ObjCHiredis redis连接到无效的IP和端口时,它将被阻止。如何将其设置为非阻塞模式?Thx

代码语言:javascript
复制
- (void)setUp {
NSLog(@"begin setUp");
NSString *ip = @"125.124.125.125";
self.redis = [ObjCHiredis redis:ip on:[NSNumber numberWithInt:123] db:[NSNumber numberWithInt:0]];
if(self.redis == nil)
{
    NSLog(@"init redis error.");
    return ;
}
 NSLog(@"end setUp");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-19 08:42:33

要做到这一点,最简单的方法可能是在单独的线程上运行连接,并使用一个块来处理主线程上的响应。

这是我经常用来执行任何类型的异步任务的辅助方法。我已经对它进行了修改,所以它应该适用于你正在尝试做的事情:

代码语言:javascript
复制
+(void)threadedConnect:(NSString*)ip On:(int)port DB:(int)db WithResponseTask:(void(^)(ObjCHiredis *redis))task
{
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

    dispatch_async(queue, ^{

        ObjCHiredis *redis = [ObjCHiredis redis:ip
                                on:[NSNumber numberWithInt:port]
                                db:[NSNumber numberWithInt:db]];

        // Run completion block back on main thread with result as argument
        dispatch_async(dispatch_get_main_queue(), ^{ task(redis); });
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14409753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档