Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在加载视图后,我应该将应该触发的代码放在哪里?_Iphone_Objective C_Sdk - Fatal编程技术网

Iphone 在加载视图后,我应该将应该触发的代码放在哪里?

Iphone 在加载视图后,我应该将应该触发的代码放在哪里?,iphone,objective-c,sdk,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) {

我正在编写一个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);
    }       
}
-(void)viewDidLoad{
[超级视图下载];
//在视图加载后,如何使这些事情发生??
INTA=1;
而(a<10){
NSLog(@“做某事”);
a=a+1;
睡眠(1);
}       
}
我的问题是,代码停止加载视图,直到循环全部完成(在本例中为10秒)

在视图完成加载后,我应该将要激发的代码放在哪里


我知道的新手问题=/

视图中出现可能是你最好的选择

顺便说一句,睡眠(1)对。。。这将使你的应用程序看起来像是挂断在计算中。除非您试图延迟,否则请删除该行代码


如果你想要像倒计时或倒计时之类的东西。。。请参见此

您需要做的是将长时间运行的代码放在另一个线程上。然后从viewDidAppear方法启动此线程。看看另一个问题。我提供的代码正是我认为您需要研究的。(并显示一个忙碌的指示器,但你可以去掉这部分,只需查看线程以及线程是如何启动的,以及线程是如何告诉UI它已经完成的。

我会尝试一下,谢谢。我正在尝试延迟它,它是主游戏循环的一部分,每秒运行一个特定的进程并更新各种controlsTimbo,而不是使用sleep(1);不过,您可能希望研究使用类似于我发布的示例链接中的NSTimer。这将以您指定的任何时间间隔调用一个方法,例如每秒调用一次,而不会延迟应用程序中的所有其他内容。+1 to Rob。NSTimer正是您希望每秒触发特定事件的方法(前提是它不必精确到毫秒,我想不会,因为你目前正在使用睡眠)。正如Derek所说,您也可以使用单独的线程,但这会导致线程同步问题。问题是,我不想在日程表上触发一条消息,我想触发一整页代码,我的示例被简化为仅解释概念。如果我快速眼动,则在代码中保留“睡眠”视图仍然存在相同的问题爱的睡眠代码页飞得太快了,我仍然在努力对付obj-c,所以谢谢你的耐心。我现在明白了睡眠(1)不是一个选项,因为它会阻止ViewDidDisplay出现。虽然我现在可以使用NSTimer愉快地重复或只调用一次方法,但我现在的问题是此方法无法访问我在ViewDidDisplay中设置的类实例。不幸的是,方法NSTimer调用需要使用已设置的类实例,以便它知道o使NSTimer无效并停止循环。我意识到这种知识差距是根本性的,我只是因为咬得太多而臭名昭著;-)