Objective c 如何做某事,但不超过每3秒一次

Objective c 如何做某事,但不超过每3秒一次,objective-c,xcode4.3,Objective C,Xcode4.3,假设我想实现一些快速搜索。用户输入一些字母,每当字母改变,我的程序就会在网上搜索,给出搜索建议 但是,我不希望调用该函数的频率超过3秒 我该怎么做 我目前使用计时器。此外,“搜索”自动完成的网络将在后台完成,因此一些多线程问题将出现 我很快就会发代码的。但大多数答案与我的相似 哦,是的,复杂的是,如果用户打字太快,抓取仍然应该在3秒钟后完成。因此,不是马上,但仍然要这样做。当您检测到新字母时,只需检查已过了多少时间: NSDate *d = [NSDate date]; if( lastSea

假设我想实现一些快速搜索。用户输入一些字母,每当字母改变,我的程序就会在网上搜索,给出搜索建议

但是,我不希望调用该函数的频率超过3秒

我该怎么做

我目前使用计时器。此外,“搜索”自动完成的网络将在后台完成,因此一些多线程问题将出现

我很快就会发代码的。但大多数答案与我的相似


哦,是的,复杂的是,如果用户打字太快,抓取仍然应该在3秒钟后完成。因此,不是马上,但仍然要这样做。

当您检测到新字母时,只需检查已过了多少时间:

NSDate *d = [NSDate date];

if( lastSearch == nil || [d timeIntervalSinceDate:lastSearch] > 3 )
{
    lastSearch = d;

    // Do your search ...

}
在.h文件中声明
lastSearch
,如下所示:

NSDate *lastSearch;

您可以创建计时器并检查搜索字符串的更新。类Smth

timer = [NSTimer timerWithTimeInterval:3.f target:self selector:@selector(update) userInfo:nil repeats:YES];
然后实现更新方法

-(void) update
{
    BOOL needToSearch = // check if there was changes in your search string
    if ( needToSearch )
    {
        // make new search
    }
}

只是不要忘记在不需要计时器时使其无效设置计时器,以便在计时器过期时执行搜索,但每当用户输入字符时,将计时器重置回延迟量。

这个问题有什么问题吗?为什么要投反对票?为什么要用计时器?您是否尝试过研究委托方法?