Как не получить заморозку NSSearchField? - PullRequest
1 голос
/ 18 ноября 2010

У меня есть NSSearchField, метод действия которого выполняет весь поиск, анализируя аргумент отправителя (строку).

Теперь поиск (подача большого массива) требует интенсивной загрузки процессора, что позволяет моему полю поиска зависать на несколько секунд.
В других случаях я бы отключил другой NSThread, чтобы предотвратить зависание моего графического интерфейса. Но в этом случае это невозможно, потому что я буду отсоединять другую («поисковую») ветку каждый раз, когда пользователь вводит другую букву в поле поиска.

Есть ли другой способ предотвратить зависание моего NSSearchField?

Кстати: я предполагаю, что НЕТ, потому что даже поле поиска документации разработчика постоянно зависает:)

Ответы [ 3 ]

2 голосов
/ 27 июля 2011

Я использую GCD. Я использую асинхронную очередь, и задание периодически проверяет, изменился ли текущий шаблон поиска по сравнению с тем, с которым оно было вызвано, и выдает залог, если оно имело место. Кажется, это работает довольно хорошо.

0 голосов
/ 05 сентября 2011

Установите NSTimer каждый раз, когда пользователь что-то печатает.Если таймер уже установлен, аннулируйте его или перепланируйте его.

Таким образом, вам будет предложено обновить поиск каждые N секунд, как бы быстро пользователь ни печатал.

0 голосов
/ 29 марта 2011

Разве вы не можете использовать setSendsWholeSearchString:, чтобы остановить поиск по мере ввода букв?

...