2013-01-03 39 views
0

首先祝大家新年快樂。KeyBoard在打字時掛起

我在聊天應用程序的工作我的問題是,當我發送消息給其他用戶,而以前是要我等鍵盤掛起一段時間。當時的第一條消息獲取傳遞,然後鍵盤自帶正常,如果我鍵入其他消息從懸掛狀態和我輸入的角色出現。

任何人都可以建議我該怎麼做,以防止鍵盤hang.Any建議將appriciated。

感謝

+0

掛?鍵盤很少掛起。向我們展示一些代碼。任何錯誤消息? – Raptor

+0

你沒有在UI上做'工作'線程....你是.... ^。^ –

+0

在你的應用程序中使用NSThreads –

回答

1

使用NSThread,只要你想,而不必要麼等待其他單位來完成,或者拿着其他的計算工作完成的計算工作單位。

如果明智的話,您幾乎可以將任何工作放到線程中。

一個很好的例子是一個網絡請求,在這個網絡請求中,你設置了一個線程來從網絡服務器下載數據。你的線程在完成其工作後會觸發一個「處理函數」函數。處理程序與下載的數據一起工作;例如,解析來自Web服務的XML數據。

在本例中您將使用一個線程,因爲您不希望整個應用程序在您的應用程序通過網絡下載數據並對其進行處理時鎖定。一個NSThread實例將這個工作單元放到它自己的小空間中,允許更大的應用程序繼續與用戶交互。

您不希望在iOS平臺上使用線程的示例是UI更新(例如,更改任何UIControl小部件的狀態)。所有UI更新都發生在主線程上。如果您將自己的線程與UI小部件一起使用,則行爲是不可預知的,而且往往不會發揮作用。

編輯: 爲了發送消息,你應該使用NSThread

+3

您應該避免使用線程明確如果可能的話。閱讀[「的舉動遠離線程」在蘋果的*併發編程指南*](http://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/ DOC/UID/TP40008091-CH100-SW8)。 –

+0

真的很好答案Prateek你可以給我任何鏈接哪裏可以找到NSThread的例子因爲我使用的Web服務使用XML以外的JSON值 – iEinstein

+0

@ robmayoff-那麼在這種情況下會有什麼幫助?你有什麼建議 – iEinstein

4

您必須要麼使用非阻塞,異步函數/方法來發送消息,或者您需要發送消息的調度隊列或操作隊列。

蘋果的Concurrency Programming Guide中討論了這兩種隊列類型。

您還可以觀看關於併發一些蘋果開發的視頻:

+0

你能否建議我遵循這個事情的任何鏈接,它也適合我理解而不是Doc – iEinstein

+2

閱讀併發編程指南。觀看視頻。 –

+0

我會閱讀這篇文章,併發布如果我發現任何困難順便說一句,感謝您的鏈接, – iEinstein