如何延迟保存数据?

时间:2012-02-28 20:13:31

标签: iphone objective-c ios

我想知道iOS是否允许用户执行以下操作:

我有一个益智游戏,当用户返回主屏幕时,我一直在努力保存数据。要做到这一点,使用NSNotificationCenter,我有一个游戏类来观察 [UIApplication sharedApplication] ApplicationWillResignActive 方法,所以当发生这种情况时,我会保存我的游戏状态。但是如果用户决定在动画进行时退出,则游戏将保存模型值仍在变化的midState,这通常会导致崩溃。我的问题是,如果有可能以某种方式延迟保存过程(即使它在后台),直到动画完成(或某个变量等于1)?

我的第一个想法是使用 NSTimer 创建预定活动,尝试保存,直到设置完所有内容。任何想法,将不胜感激。谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用performSelector:withObject:afterDelay

// Call doSomething after a 1 second delay
[self performSelector:@selector(doSomething) withObject:nil afterDelay:1.0f]; 

答案 1 :(得分:1)

您应该研究如何停止动画并记录动画的预期最终值,而不是尝试延迟保存,尤其是在ApplicationWillResignActive中。根据动画的方法(UIView静态方法,基于块,第三方),通常有一种方法可以阻止它们,因为你定义动画的内容,你应该已经知道最终状态。

对于基于块的动画: How to cancel UIViews block-based animation?