1

我有一个 NSSearchField,它的 action 方法通过分析 sender 参数(字符串)来完成所有搜索工作。

现在搜索的东西(提供一个大数组)是一种 CPU 密集型的,这让我的搜索字段冻结了几秒钟。
在其他情况下,我会分离另一个 NSThread 以防止我的 GUI 冻结。但在这种情况下这是不可能的,因为每次用户在搜索字段中输入另一个字母时,我都会分离另一个(“搜索”)线程。

还有另一种方法可以防止我的 NSSearchField 冻结吗?

顺便说一句:我的猜测是否定的,因为即使是开发者文档的 seach 字段也会一直冻结 :)

4

3 回答 3

2

我使用 GCD。我使用异步队列,该作业会定期检查当前搜索模式是否与调用它的方式不同,如果有,则退出。这似乎工作得很好。

于 2011-07-26T23:20:52.670 回答
0

您不能setSendsWholeSearchString:在输入字母时停止搜索吗?

于 2011-03-28T22:47:37.807 回答
-1

每次用户键入内容时设置一个 NSTimer。如果已经设置了计时器,则将其无效或重新安排。

这样,您只会被要求每 N 秒刷新一次搜索,无论用户键入的速度有多快。

于 2011-09-05T19:18:45.483 回答