最简单的情况是直接使用[NSThread sleepForTimeInterval:1.0]这样的函数,直接阻塞函数.但是这样的处理方式,只是为了显示default而已.这段时间并不能用来加载数据.
如果要在这段时间,可以加载数据的话,是不能使用sleep的,这会导致主线程的阻塞.
正常的方式应该使用runloop来处理.
大概的形式如下:
self.connectionTimer=[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:self.connectionTimer forMode:NSDefaultRunLoopMode];
do{
[[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
}while (!done);
-(void)timerFired:(NSTimer *)timer{
done = YES;
}
这里timer只是用来延时1.5秒.如果使用block的函数,可以用block来设置done的状态.
本文介绍了如何利用Runloop而非简单的sleep函数来实现延迟加载数据的功能。通过具体代码示例展示了如何设置定时器以达到这一目的,并保持主线程不被阻塞。

4145

被折叠的 条评论
为什么被折叠?



