我有一个奇怪的问题与Tiny Wings的错误修正.在我的游戏中我使用的东西如下:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setFloat:musicVolume forKey:@"musicVolume"];
Run Code Online (Sandbox Code Playgroud)
用于保存一些首选项和高分表.在游戏结束时,当游戏画面出现时,游戏将高分保存到standardUserDefaults.它运行良好,直到游戏显示如下的UIAlertView:
UIAlertView *alert = [[UIAlertView alloc] init];
[alert setTitle:@"Get ready!"];
[alert setDelegate:self];
[alert addButtonWithTitle:@"Ok"];
[alert show];
[alert release];
Run Code Online (Sandbox Code Playgroud)
之后,AlertView消失每次游戏保存财产以后一会儿游戏滞后(在几秒钟一些设备)的standardUserDefaults.在游戏使用UITextField输入玩家名称后也会发生这种情况.在使用两个UIKit Elements中的一个之前游戏中没有任何延迟,但在使用它们之后游戏会延迟直到我重新启动应用程序.我用性能工具分析了这个问题,"I/O活动"仪器显示有数百个"开放 - 读取 - 关闭"访问
/System/Library/Frameworks/UIKit.framework/InputModeProperties.plist
Run Code Online (Sandbox Code Playgroud)
这导致了滞后.
我完全不知道该怎么做.有任何想法吗?
编辑:
苹果开发者论坛http://devforums.apple.com/message/424374#424374中有一个帖子,其中有人有同等的问题,似乎它只出现在iOS 4.3中.我已经测试了它,而且仅在我的4.3设备上发生了滞后(不是在3.1 iPod Touch和4.2 iPad上).