我是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];
}
}
}
答案 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];