打印登录iOS

时间:2013-10-03 06:04:55

标签: ios objective-c logging uitextview performselector

我需要在文本视图中显示日志输出然后在我的应用程序中显示。我尝试在我的序列中使用 performSelector ,但它没有像我想象的那样工作。有人可以告诉我该怎么做吗?

例如,当我单击一个按钮时,我会在下面执行大量操作,然后我想在textview中显示日志,而不是在整个操作完成之后。

另外,我不能在同一序列中多次调用 performSelector 吗?

  

按钮点击内的顺序如下:

- (IBAction)Write:(id)sender {

 //do some action here
 DisplayString = @"Seq1 pass"
 [self performSelector:@selector(updateviewText) withObject:nil afterDelay:0];
 //do some more action
 DisplayString = @"Seq2 pass"
 [self performSelector:@selector(updateviewText) withObject:nil afterDelay:0];
 ....
}
  

这是updateviewText部分:

-(void)updateviewText {
        dispatch_queue_t queueNew = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
        dispatch_async(queueNew,^ {

        dispatch_async(dispatch_get_main_queue(),^{
            [self.txtViewUseCaseLOG setText:[NSString stringWithFormat:@"%@\n%@", 
                                       self.txtViewUseCaseLOG.text,DisplayString ]];             
        });           
    });
}
  

DisplayString 是一个全局变量。

     

这段代码没有将text文件设置为textview然后......但正如我之前所说的那样,那时我需要那些消息......

1 个答案:

答案 0 :(得分:0)

您无法异步更新UI。如果您正在异步执行任务并想要更新UI,则必须使用dispatch_sync

当你做异步打开另一个异步任务时,你为什么要这样做?

接下来的事情是,如果你在这两种方法中只使用DisplayString,最好将NSString参数添加到updateViewText,这样你就不需要全局变量了。