如何在动画期间执行处理

时间:2012-01-06 17:58:19

标签: objective-c xcode ipad

我有一个应用程序,当我从数据库和构建对象中读取一些信息时,我想要一个图像动画。我已经使用了UIImageView并设置了图像数组,但是如果我开始动画然后进行数据库处理,动画就不会播放。

有没有其他方法可以启动动画,还是让我在动画中进行处理?

由于

3 个答案:

答案 0 :(得分:3)

听起来你正在主线程上进行处理,这阻止了你的动画运行。

动画在主线程上运行,所以为了避免阻塞,这个线程处理应该安排在不同的线程上。

您可以使用以下块来实现此目的:

dispatch_queue_t queue;
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(queue, ^{

    // Your processing to be performed on this thread.
});

或者在早期的iOS版本上,如下:

[self performSelectorInBackground:@selector(yourProcessing) withObject:nil];

- (void)yourProcessing {

    // Your processing to be performed on this thread.
}

我强烈建议您阅读Threading Programming Guide,然后观看有关Block和Grand Central Dispatch(WWDC 2009)的WWDC会议。

答案 1 :(得分:2)

开始动画后,您可以在后台线程上运行数据库处理。这将使两者同时发生。

答案 2 :(得分:2)

听起来你正在尝试在主线程上进行数据库处理,是的,它会阻止你的UI,因此它无法动画(因此用户无法与任何东西进行交互)。看看Concurrency Programming Guide

相关问题