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

首頁 > 系統 > iOS > 正文

iOS中定位(location manager )出現log日志的解決辦法

2020-07-26 02:38:30
字體:
來源:轉載
供稿:網友

前言

最近發現一個問題,自iOS 10.0以后,項目中老是出現有關定位管理者的日志信息,說定位管理者最好放在主線程;在實際開發中,當在子線程中創建定位管理者,有可能收不到回調信息

提示信息如下:

A location manager (0x7fbafac12560) was created on a dispatch queue executing on a thread other than the main thread. It is the developer's responsibility to ensure that there is a run loop running on the thread on which the location manager object is allocated. In particular, creating location managers in arbitrary dispatch queues (not attached to the main queue) is not supported and will result in callbacks not being received.

中文翻譯為:一個定位管理者創建在子線程,而不是主線程.在開發中,要確保一個定位管理者所在的線程要在運行循環(Run loop)中.在實際開發中,當在子線程中創建定位管理者,有可能收不到回調信息.

解決過程

我找了好久,嘗試了好多方法,都無果: 這是在stackoverflow中搜到的解決方法

作者的問題:

比較好的回答:

但我嘗試了,也無果.

沒辦法,有時間了就去嘗試.

解決方法:

最終解決方法是在App Delegate 內關于地圖或者導航注冊信息那一塊.

這是我導航注冊代碼:

 //開啟導航服務 [BNCoreServices_Instance initServices:@"xxxxxxxxxxxx"]; [BNCoreServices_Instance startServicesAsyn:^{  NSLog(@"導航開啟成功"); } fail:^{  NSLog(@"導航開啟失敗"); }];

我在開啟導航服務的時候,使用了異步開啟,然后主線程回調開啟的結果.
進入百度導航API發現:

/** * 啟動服務,同步方法,會導致阻塞 * @param SoundDelete [in]傳入遵守BNSoundManagerProtocol的實例 * @return 啟動結果 */- (BOOL)startServices;/** * 啟動服務,異步方法 * * @param success  啟動成功后回調 success block * @param fail   啟動失敗后回調 fail block */-(void)startServicesAsyn:(void (^)(void))success fail:(void (^)(void))fail;

有兩個方法開啟導航服務:

     - 一個是在主線程同步開啟,說會導致阻塞;

     - 另外一個是異步開啟,將結果回調到主線程.

之所以會打印上述日志,是因為我使用了異步開啟導航服務.

如果我使用同步開啟

[BNCoreServices_Instance startServices];

就不會打印出有關定位的日志信息.

抱歉,我有強迫癥,不喜歡日志框有打印,所以我選擇了同步開啟.

如果你覺得異步加載好,不會阻塞線程,可以無視打印日志的影響,你可以使用異步開啟.

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜昌市| 武清区| 太白县| 岱山县| 天全县| 阿荣旗| 白水县| 柳江县| 九龙城区| 桂东县| 石家庄市| 集贤县| 古田县| 阿拉善左旗| 龙海市| 襄樊市| 克东县| 来宾市| 泉州市| 南安市| 喀喇沁旗| 延安市| 福清市| 嘉峪关市| 巨野县| 宜川县| 玉龙| 沂南县| 宜君县| 庆云县| 塔河县| 武强县| 浪卡子县| 晋中市| 根河市| 新津县| 建德市| 珠海市| 潞西市| 柳河县| 花垣县|