UIButton对iPad应用程序的响应时间

时间:2010-06-21 16:58:35

标签: iphone time uibutton response ipad

我有一个简单的UIButton,一旦点击,播放1秒的声音。我希望能够非常快速地点击该按钮,并且可以像人类一样多次产生这种声音。

我目前已经开始运行了包括,也许这就是罪魁祸首......而且,我正在深入研究苹果的参考资料,无法找到UIButton响应每个事件的速度以及如何快速的信息,如果有的话,我可以控制和操纵这个值。

我应该切换到不同的音频框架,如“音频工具箱”,还是有办法加快速度,或者指示按钮接受第二次和第三次按下,而第一次按下的动作仍然是正在进行中。

喝彩!

〜NIR。

1 个答案:

答案 0 :(得分:0)

创建一种与按钮处理程序方法分开播放声音的方法。假设你称之为playSound。在您的按钮处理程序中,使用以下命令在后台执行该方法:

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

这会产生额外的开销,在它播放声音之前产生一个线程。如果您想加快速度,请创建一个工作线程池并使用:

[self performSelector:@selector(playSound) 
             onThread:nextThread 
           withObject:nil 
        waitUntilDone:NO];

创建工作线程池:

-(void)stillWorking {
    NSLog(@"Still working!");
}

-(void)workerThreadMain {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
    NSTimer *threadTimer = [NSTimer scheduledTimerWithTimeInterval:10 
                                                            target:self 
                                                          selector:@selector(stillWorking) 
                                                          userInfo:nil 
                                                           repeats:YES];

    [[NSRunLoop currentRunLoop] addTimer:threadTimer forMode:NSDefaultRunLoopMode];
    [[NSRunLoop currentRunLoop] run];

    [pool drain];
}

-(NSArray*)createWorkerThreads { 
    NSMutableArray *threadArray = [[[NSMutableArray alloc] initWithCapacity:10]autorelease];
    NSThread *workerThread;

    for (i=0;i<10;i++) {
        workerThread = [[NSThread alloc]initWithTarget:self 
                                              selector:@selector(workerThreadMain) 
                                                object:nil];
        [workerThread start];
        [threadArray addObject:workerThread];
    }
    return [NSArray arrayWithArray:threadArray];
}

(此代码未经测试,可能需要一些调试,但它应该让您朝着正确的方向前进。)