我应该在视图加载后放置应该触发的代码?

时间:2010-05-25 02:54:18

标签: iphone objective-c sdk

我正在编写一个Objective-c程序,它根据时间进行一些计算,最终每秒都会更新UILabel。

在这里解释一下这个概念的一些简化代码,我把它放在处理视图的类的viewDidLoad中。

- (void)viewDidLoad {

    [super viewDidLoad];
    // how do i make this stuff happen AFTER the view has loaded??
    int a = 1;
    while (a < 10) {
        NSLog(@"doing something");
        a = a + 1;
        sleep(1);
    }       
}

我的问题是代码会暂停加载视图,直到循环全部完成(在这种情况下为10秒)。

在视图加载完毕后,我应该在哪里放置要触发的代码?

新手问题我知道= /

2 个答案:

答案 0 :(得分:1)

viewDidAppear可能是你最好的选择。

顺便说一下,睡眠(1)没有帮助......这将使你的应用程序像计算中的挂起一样。除非你试图延迟它,否则删除那行代码。

如果您想要倒计时或计时计时器......请参阅此how to show countdown on uilabel in iphone?

答案 1 :(得分:1)

您需要做的是将长时间运行的代码放在另一个线程上。然后从viewDidAppear方法启动此线程。在另一个问题上查看my response。我提出的代码正是我认为你需要研究的内容。 (并显示一个繁忙的指示器,但您可以查看该部分,只需查看线程及其启动方式以及线程如何告知UI已完成。