您好,登錄后才能下訂單哦!
最近在做一個應用時,測試時發(fā)現(xiàn)一個我寫的控制器控制節(jié)點出現(xiàn)了問題,開始報NSGenericException錯誤,日志報的原因時迭代遍歷元素時,元素被改變了,一開始我認為是線程同步出了問題,所以把迭代過程用線程鎖保護了起來,但是發(fā)現(xiàn)問題依舊,然后開始不停查資料,最終發(fā)現(xiàn)問題居然在控制器為節(jié)點發(fā)消息的循環(huán)上。
原因就在這 "foreach",它的內部遍歷使用了類似 Iterator進行迭代遍歷,一旦元素變動,之前的元素全部被失效,所以在foreach的循環(huán)當中,最好不要去進行元素的修改動作,若需要修改,循環(huán)改為for遍歷,由于內部機制不同,不會產生修改后結果失效的問題。
總結一下:遍歷元素時,若需要修改原元素,不要使用foreach,而使用for循環(huán)。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。