我在这里有一些我正在开发的iOS应用程序的代码,出于某些原因,似乎是一个快速而简单的任务,每次都需要我的iPhone 4S完成一秒钟或更长时间。
上下文就是这个...我有一个2按钮ActionSheet弹出窗口,如果用户点击其中一个按钮,应用程序似乎停止了大约一秒钟。这是代码:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
UIAlertView* newTimerAlertView = [[[UIAlertView alloc] initWithTitle:@"Create New Timer"
message:@"Enter a name for your new indicator"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Create", nil] autorelease];
newTimerAlertView.tag = kNewTimer;
newTimerAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
[newTimerAlertView show];
}
else if (buttonIndex == 1)
{
NSLog(@"ActionSheet button 2 tapped");
UIAlertView* newTallyAlertView = [[[UIAlertView alloc] initWithTitle:@"Create New Tally"
message:@"Enter a name for your new indicator"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Create", nil] autorelease];
newTallyAlertView.tag = kNewTally;
newTallyAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
[newTallyAlertView show];
NSLog(@"end");
}
}
为了简单起见,专注于第二个按钮(尽管第一个按钮的行为方式相同),日志看起来像这样:
2012-01-25 20:35:46.330 ...[177:707] ActionSheet button 2 tapped
2012-01-25 20:35:47.194 ...[177:707] end
2012-01-25 20:35:56.154 ...[177:707] ActionSheet button 2 tapped
2012-01-25 20:35:56.180 ...[177:707] end
请注意,我第一次尝试它,在代码片段完成执行之前超过一秒钟,但第二次(以及所有后续时间)代码只需要30毫秒左右。
代码有问题吗?或者我是否需要通过进度视图来弥补延迟?
谢谢!
编辑:这只发生在从Xcode运行应用程序的设备上...也许这与调试器有关?
答案 0 :(得分:3)
我现在,如果警报不在主线程上,则可能会延迟
答案 1 :(得分:0)
在我遇到的任何情况下,Xcode都不会减慢警报视图。
你的代码看起来非常普通,所以我怀疑你发布的代码片段外面有什么东西。
我看到你引用计时器......这是否可能这是其他东西的表现形式,比如计时器回调,在主线程上疯狂?尝试使用Time Profiler或系统跟踪工具来找出阻塞的东西(肯定是什么)。