1. 程式人生 > >關於ios使用執行緒導致程式不規律的閃退問題解決

關於ios使用執行緒導致程式不規律的閃退問題解決

之前自己寫的一個小專案,使用支執行緒的目的就是為了一些運算 或者伺服器間的互動。

 [NSThreaddetachNewThreadSelector:@selector(setLoadData)toTarget:selfwithObject:nil];

開啟一個執行緒,方法是setLoadData,主要是去伺服器那邊請求資料。獲取資料之後通知主執行緒解析資料,方法是

[selfperformSelectorOnMainThread:@selector(parseTheData:)withObject:sizeData waitUntilDone:YES];

在parseTheData裡面是具體的解析方法。

SVProgressHUD開源類庫,大家都稱它為小菊花。

為了在請求資料的過程就顯示小菊花,就是“正在載入”,我在支執行緒裡面使用了,

[SVProgressHUDshowWithStatus:@"載入中..."maskType:SVProgressHUDMaskTypeClear];


結果程式不一定每次都閃退,但是有時候操作快了,就會出現閃退。

原因我覺得是:只有主執行緒才能控制view的變化,會導致資源搶奪 死鎖的。

解決方法:將[SVProgressHUDshowWithStatus:@"載入中..."maskType:SVProgressHUDMaskTypeClear];寫線上程發起的前面。

問題二:

關於在主執行緒裡宣告的陣列空間,我在支執行緒中

removeAllObjects

起初還是正常的,但是在不管的請求資料的過程就,發現程式會不規律的閃退,這讓我蛋疼~

後來我通知主執行緒去removeAllObjects,問題就解決了。

原因:支執行緒別去用主執行緒的資料 最好,使用的話 也傳入複製使用為好。這樣會導致資源搶奪,死鎖,程式閃退。

以上是自己記錄,如果有什麼錯誤,請大神們指出。