我正在创建一个简单的iPhone应用程序,其唯一功能是永久更新UIView(直到它退出)。
我在applicationDidFinishLaunching和viewDidLoad:
中尝试了这个while(1) { // update view here }
但这不起作用 - 应用程序永远不会完成加载。我确信这有一个简单的解决方案,我只是不知道它是什么。
另外:理想情况下,这个过程应该消耗很少的资源。
答案 0 :(得分:6)
你不能拥有像这样的while (1)
语句,因为它不允许viewDidLoad返回,你的应用程序永远不会得到任何其他调用,如点击处理,屏幕绘制更新等。
在viewDidLoad中,使用以下方式设置计时器任务:
updateTimer = [NSTimer scheduledTimerWithTimeInterval: kUpdateTimeInterval target:self selector:@selector(updateView) userInfo:nil repeats:YES];
并且有一个名为updateView
的方法实际上进行了更新。您可以使用updateView
而不是setNeedsDisplay
来触发调用视图类的-drawRect方法,并在那里进行实际绘制。
现在最终发生的事情是你的viewDidLoad会设置一个重复的任务,并且每个kUpdateInterval都会更新你的视图。
答案 1 :(得分:1)
您可以在显示的数据发生变化时调用其-setNeedsDisplay方法,而不是一直更新视图。