1

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

例如,当我点击一个按钮时,我在下面做了很多操作,我想在文本视图中显示日志,而不是在整个操作完成之后。

另外,我不能在同一个序列中多次调用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在这里是一个全局变量。

这段代码当时并没有将文本设置为文本视图......但正如我之前问过的那样,我当时和那里需要这些消息......

4

1 回答 1

0

您不能异步更新 UI。如果您正在异步执行任务并想要更新您必须使用的 UI dispatch_sync

当你异步地做某事时,你为什么要打开另一个异步任务?

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

于 2013-10-03T10:40:42.090 回答