在无限循环iOS中显示输出

时间:2013-04-09 13:19:48

标签: ios loops text label infinite

我是iOS新手,我需要一些关于如何在无限循环中在Iphone屏幕上显示输出的反馈。

按下按钮时,应用程序进入无限循环并创建一些输出。我想在Iphone屏幕上显示这些输出。虽然我在调试屏幕上从printf获取了这些值,但在Iphone屏幕上没有显示任何内容。如果我在没有无限循环的情况下尝试这个函数,我将能够在屏幕上看到输出,但是应用程序必须在无限循环中运行。

由于我对编程很陌生,应用程序是否需要以多线程模式运行?

代码如下:

-(IBAction)button:(UIButton *)sender{
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

        int output = -1;

        while (pool) {

            //output is received

            if((output != -1) ) {

                printf("%i \n", output); // the output is seen on debug screen

                self.display.text = [NSString stringWithFormat:@"%i",output]; // the outputs is not shown on iphone

                //[pool release];

            }
        }
    }

2 个答案:

答案 0 :(得分:1)

您没有更改输出值,因此如果它进入循环,它将永远不会改变。

该应用已经是多线程的,不可能是其他方式 - 您可能正在讨论后台任务(http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

你是否应该使用不同的线程取决于循环的控制方式,任何繁重的工作或大的大数字应该从主线程中删除,类似于:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //My background stuff

    dispatch_async(dispatch_get_main_queue(), ^{
        //My ui code
    });
});

关于线程,GCD使用起来非常简单:(https://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html) - 有很多关于GCD的教程

答案 1 :(得分:0)

我认为问题是快速变化的文字,不让我们看到输出。

试试这个并告诉我你知道的是什么。

self.display.text = [NSString stringWithFormat:@"%@%i",self.display.text, output];