2010-03-03 47 views
1

與「爲什麼我的代碼不能編譯」問題相比,這是更高層次的「你如何解決這類問題」類型的問題。iPhone SDK - 搜索欄線程同步問題

我在iPhone應用程序中搜索我的數據就好了。但是,每次按鍵後我都會觸發搜索(handleSearchForTerm被調用)。這造成了一些滯後。

我喜歡讓搜索結果自動出現的想法,但我不喜歡大數據集,搜索行爲似乎中斷用戶輸入。

這是我無法修復使我的搜索例程更快?或者,有沒有更好的方法來處理這個問題?

一個想法是,我希望能夠在按鍵後觸發一次搜索,例如500毫秒(除非在此期間還有另一個按鍵,然後重置)。那可能嗎?

感謝您的任何幫助。

回答

1

可以使用performSelector:withObject:afterDelay調用搜索程序500ms的

編輯的延遲後(您的評論後):

您可以使用cancelPreviousPerformRequestsWithTarget: selector: object:到後續調用取消對搜索程序

當然,您需要某種機制來確定搜索例程是否正在進行。爲此使用信號量。

+0

如果調用多個performSelectors來執行相同的任務(使用不同的對象),那麼只有最後一個消息?或者我是否需要實現某種機制才能獲得最後的請求? – Matt

+0

請檢查修改後的答案 –