国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS開發:MKMapView地圖內存持續增加的釋放解決辦法

2019-11-14 19:10:59
字體:
來源:轉載
供稿:網友

內存持續增加的釋放解決辦法

最近修改一個用到MKMapView的項目,內存一直占用過多,每次拖拽地圖時還會增加占用,且一直無法釋放。

經過兩天的排查,最后鎖定是創建的self.map對象在加載地圖的時候,不斷申請內存,但在View的生命期內不會釋放。

查閱資料了解到removeFromSuperview可以釋放內存,但remove的話地圖會從父View上消失。

最后解決辦法是在- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated中加入了兩行代碼

[self.map removeFromSuperview];[self.view addSubview:mapView];

在移除self.map的同時,重新加載mapView,兩行代碼就可以達到釋放內存的效果。

用Instruments測試顯示,之前不能釋放的內存可以釋放了。下圖中的Malloc 4.00MB 即為地圖申請的內存,總共申請164M,釋放132M后,程序平穩運行時的地圖內存只需要28M。

 

后續: 大頭針標注的點擊事件會出現沒有反應,懷疑是remove破壞了響應鏈,暫未找到解決辦法。

 

地圖縮放時出現錯誤提示

Terminating app due to uncaught exception 'NSGenericException',   reason: '*** Collection was mutated while being enumerated.'

原因可能是線程沖突,解決辦法是添加標記,避免同時對地圖執行操作,可參考:
http://stackoverflow.com/questions/27273211/array-was-mutated-while-being-enumerated-swift


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屯留县| 中阳县| 尼玛县| 温泉县| 曲沃县| 辛集市| 拜城县| 临海市| 永年县| 哈尔滨市| 丹凤县| 穆棱市| 武陟县| 宜宾市| 甘肃省| 蓝山县| 高密市| 漳浦县| 庐江县| 寻乌县| 察隅县| 日喀则市| 利津县| 布尔津县| 甘孜县| 囊谦县| 濉溪县| 渝北区| 克什克腾旗| 正蓝旗| 芜湖市| 临安市| 建始县| 宜宾县| 祁门县| 仲巴县| 大庆市| 泰州市| 从江县| 霍林郭勒市| 扎兰屯市|