如何暂停语句执行和 UIalertview 在单独的循环上运行

Posted

技术标签:

【中文标题】如何暂停语句执行和 UIalertview 在单独的循环上运行【英文标题】:How to Pause Statements Execution and UIalertview Run On separate Loop 【发布时间】:2014-09-24 04:33:45 【问题描述】:

您好,我正在开发 Xmpop 聊天应用程序,同时文件传输要求对传入文件接受的权限。对于这个任务我是这样使用的。

UIAlertView *alrt = [[UIAlertView alloc]initWithTitle:@"Incommming File" message:name delegate:self cancelButtonTitle:@"Reject" otherButtonTitles:@"Accept", nil];
    alrt.tag = 1111;
    [alrt show];
    while (buttonClicked == -1)
    
        NSLog(@"-- runloop");
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];
    
    if (buttonClicked == 1)
    
        NSLog(@"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~YES");
        return YES;
    
    else
    
        NSLog(@"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~NO");
        return NO;
    

此代码在示例应用程序中工作,但在我的聊天应用程序中 UI 阻塞。我该怎么做请帮助我.. 提前致谢。

【问题讨论】:

可以分享例子的链接吗? 你能知道这个while循环是在哪个函数中调用的吗? 以上语句都属于'-(BOOL)incommingFileRequest:(XMPPIQ *)inIq' 方法应该返回我们选择的Bool,(Accept or Reject) 可以分享例子的链接吗? 【参考方案1】:

尝试在异步块中调用[alrt show];

类似这样的:

dispatch_async(dispatch_get_main_queue()) ^
    [alrt show];
  

希望这会有所帮助!

【讨论】:

以上是关于如何暂停语句执行和 UIalertview 在单独的循环上运行的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器的开发工具中暂停语句时,如何在该语句之后立即终止执行?

单独线程上的可暂停计时器

如何在 Swift 中创建 UIAlertView?

多个 UIAlertView;每个都有自己的按钮和动作

python程序如何让其暂停

如何暂停存储过程一段时间?