最近公司事情不多,作为一个开发的小菜鸟,就想着用swift来重写一下整个项目。
项目是需要在首页进行定位,地图使用的高德地图,我们这里有一个需求就是程序进入前台的时候首页界面进行刷新,我就在首页进行对applicationDidBecomeActive
的监听,在监听里面刷新界面,但是程序一运行就发现在首页界面定位权限框多次弹出,界面多次进行刷新。
what?我就换成了swift了,逻辑也是一样的,怎么就这样子了?打断点进行调试,发现监听applicationDidBecomeActive
的方法被多次调用,从而发现applicationDidBecomeActive
的方法走了很多次,嗯。。。尴尬,什么情况?
于是我将程序的生命周期全部进行输出打印,发现在首页界面只要定位权限框一弹出程序就会进入applicationWillResignActive状态,弹框消失就进入applicationDidBecomeActive
,多次权限框弹出,导致多次进入applicationDidBecomeActive
,从而导致监听方法被多次调用,界面多次刷新。
我又运行OC写的工程,发现APP虽然在首页使用定位功能,但是权限弹出框会在引导页面弹出,此时首页还没有注册监听,所以不会多次调用监听方法。
为什么swift的工程在首页弹出定位框,OC的工程在引导页面弹出输入框呢?尴尬。。。还没有找到为什么。既然知道是弹出框的问题,我就在APPdelegate里面调用了封装的定位单例,权限框就在引导页弹出了,首页的监听还没有注册,不会调用监听方法,从而解决了权限框多次弹出导致页面的多次刷新问题。
网友评论