iphone多執行緒操作NSArray時的乙個技巧

2021-08-31 04:16:55 字數 593 閱讀 4949

技巧說明:乙個以上的執行緒同時操作nsarray, 任何乙個有寫操作,都容易引起「collection was mutated while being enumerated」 」

所以在其中只有讀操作的執行緒中,將此array拷貝乙份出來進行讀取,可以解決此問題。

使用場景:移動地圖時,地圖上會及時出現當前視窗經緯度範圍的物體(比如一些自己geo資料庫中的優惠餐館等)

程式結構:1. 在移動地圖事件上觸發網路請求。

2. 請求返回後,將返回的資料用mkannotion的方式顯示在地圖上

使用者體驗要求:在請求返回前,使用者可以繼續移動地圖。這意味這1和2是非同步的,需要在不同的執行緒中進行

主要**:

執行緒1中,發出網路請求

執行緒2中渲染mapview

注意,如果沒有下面這句話,會發生異常:

"collection was mutated while being enumerated」

nsarray *sitesresult = [nsarray arraywitharray:self.searchresult.results];

iPhone 多執行緒程式設計

多執行緒之nsinvocationoperation 本次介紹nsoperation的子集,簡易方法的nsinvocationoperation implementation mycustomclass void launchtaskwithdata id data 這個是真正執行在另外乙個執行緒的...

iphone開發 多執行緒

from 舉例說明怎麼簡單的建立乙個子執行緒。用到的類是nsthread類,這裡使用detachnewtheadselector totagaet withobject建立乙個執行緒。函式setupthread nsarray userinfor。通過userinfor將需要的資料傳到執行緒中。函式...

iphone開發 多執行緒

舉例說明怎麼簡單的建立乙個子執行緒。用到的類是nsthread類,這裡使用detachnewtheadselector totagaet withobject建立乙個執行緒。函式setupthread nsarray userinfor。通過userinfor將需要的資料傳到執行緒中。函式定義 vo...