最近公司事情不多梭伐,作為一個開發(fā)的小菜鳥降允,就想著用swift來重寫一下整個項(xiàng)目期贫。
項(xiàng)目是需要在首頁進(jìn)行定位盯桦,地圖使用的高德地圖炒辉,我們這里有一個需求就是程序進(jìn)入前臺的時候首頁界面進(jìn)行刷新顽爹,我就在首頁進(jìn)行對applicationDidBecomeActive
的監(jiān)聽撮竿,在監(jiān)聽里面刷新界面吮便,但是程序一運(yùn)行就發(fā)現(xiàn)在首頁界面定位權(quán)限框多次彈出,界面多次進(jìn)行刷新幢踏。
what髓需?我就換成了swift了,邏輯也是一樣的房蝉,怎么就這樣子了僚匆?打斷點(diǎn)進(jìn)行調(diào)試,發(fā)現(xiàn)監(jiān)聽applicationDidBecomeActive
的方法被多次調(diào)用搭幻,從而發(fā)現(xiàn)applicationDidBecomeActive
的方法走了很多次咧擂,嗯。檀蹋。松申。尷尬,什么情況俯逾?
于是我將程序的生命周期全部進(jìn)行輸出打印贸桶,發(fā)現(xiàn)在首頁界面只要定位權(quán)限框一彈出程序就會進(jìn)入applicationWillResignActive狀態(tài),彈框消失就進(jìn)入applicationDidBecomeActive
,多次權(quán)限框彈出桌肴,導(dǎo)致多次進(jìn)入applicationDidBecomeActive
皇筛,從而導(dǎo)致監(jiān)聽方法被多次調(diào)用,界面多次刷新坠七。
我又運(yùn)行OC寫的工程水醋,發(fā)現(xiàn)APP雖然在首頁使用定位功能旗笔,但是權(quán)限彈出框會在引導(dǎo)頁面彈出,此時首頁還沒有注冊監(jiān)聽离例,所以不會多次調(diào)用監(jiān)聽方法换团。
為什么swift的工程在首頁彈出定位框,OC的工程在引導(dǎo)頁面彈出輸入框呢宫蛆?尷尬艘包。。耀盗。還沒有找到為什么想虎。既然知道是彈出框的問題,我就在APPdelegate里面調(diào)用了封裝的定位單例叛拷,權(quán)限框就在引導(dǎo)頁彈出了舌厨,首頁的監(jiān)聽還沒有注冊,不會調(diào)用監(jiān)聽方法忿薇,從而解決了權(quán)限框多次彈出導(dǎo)致頁面的多次刷新問題裙椭。