扒蟲篇-Bug日志 Ⅰ

總有一些報錯是你不愿意看見的,可是還是應該昂首挺胸去面對吧!

很多莫名其妙的Bug都是自己隱蔽的設置引起的,沒有把整個流程理一遍是無法發現的。沒有莫名其妙的Bug,只有未理清的思路。(持續更新中.......)**


1.缺少系統類庫的支撐而報的 64位模擬器不兼容

Snip20160928_1.png

之前在集成調試 AsReader的時候,遇到的bug,是一家日本企業生產的產品,官方文檔比較簡單而且還不寫清楚,表面上看是報的不兼容 64位模擬器的錯誤,我用真機調試還是報相同的錯誤。最后發現少了系統的類庫

解決方法:導入ExternalAccessory.FrameWork,

 Communicate with accessories connected to a device by the Apple Lightning connector, or connected wirelessly through Bluetooth.
 與由蘋果閃電連接器連接到設備,或通過藍牙無線連接配件進行通信。

添加后錯誤少了依然有報錯:

Snip20160929_1.png

“undefined symbol: __gxx_personality_v0” 是比較常見的一種報錯,是因為在linux下編譯C++程序,如果使用gcc命令進行編譯,gcc無法連接到c++庫,所以會出現錯誤。

解決方法:導入libstdc++.dylib 即可解決。

2.模擬器運行時出現如下提示:

Snip20161018_1.png

解決方法:如果 Clean 重新運行;關閉項目,重新打開,Clean重新運行都不解決問題的話,試著 重置一下模擬器吧,那會解決這個問題。

3.Xcode 8 項目在 Xcode7上的模擬器運行時出現如下提示:

Snip20161010_2.png

解決方法:在 Main.storyboard 的右邊的編輯區設置如下即可:

Snip20161011_3.png

4.Xcode 8適配

XIB和Storeboard適配
在Xcode8之前,創建一個XIB或SB文件,都是一個600*600的方塊XIB文件。在Xcode8之后,創建的XIB文件默認是6s尺寸的大小。
但是Xcode8打開之前舊項目的XIB或SB文件時,會彈出下面的彈框, 這時候一般直接選擇Choose Device即可。

1477274596935431.png

Choose an initial device view
但是這樣有個問題,如果Xcode8打開過這個XIB文件,并選擇Choose Device之后。其他的Xcode8以下版本的編譯器,將無法再打開這個文件,會報以下錯誤:
The document “ViewController.xib” requires Xcode 8.0 or later. This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8.0 or later.

有兩種方法解決這個問題:

你同事也升級Xcode8,比較推薦這種方式,應該迎接改變。
右擊XIB或SB文件 -> Open as -> Source Code,刪除xml文件中下面一行字段。

1477274638709256.png

5.模擬器運行時出現如下報錯

Snip20161028_1.png

解決方法

Snip20161028_2.png

6.C++語音匯編時有時會出現這個 頭文件找不到的情況

Snip20161101_1.png

解決辦法: 把有C語音的地方 .m 改為 .mm 即可。

7. 大華視屏監控App,由Xcode7 遷移到 Xcode 8 上出現的Bug

Snip20161031_1.png

這個Bug可把我惡心壞了,弄了整整一天,心力交瘁,字面意思上看是 一個 .a 不支持 arm64
我們查看下靜態庫所支持的架構,打開終端輸入查看命令lipo - info xxx.a , (輸入.a 的完整路徑)結果如下:


這樣的就可以看到 .a 所支持的架構了,我查出的報錯的 .a 根本沒問題,而且人家原本的Dome 是可以跑起來的。最后我聯想到了工程設置可能是問題的所在,經過反復的比對,最后發現了坑爹的Bug,所在。

Snip20161101_6.png

解決辦法: Enable Testability 設置為NO,工程新建的時候默認是設置為YES的,就是這個惡心的地方導致的Bug。
這個設置跟單元測試有關,不知道為啥造成了這個Bug。

8.使用 AFNetworking 3.0上傳圖片出現超時,無法上傳等問題

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; //下面這句話不寫會造成接受的信息nil,造成崩潰 manager.responseSerializer= [AFHTTPResponseSerializer serializer]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"text/plain", @"application/json",nil];

不知道什么情況,自己的瀏覽器打開一個測試的 鏈接很慢很慢不出結果,但是打開其他的網頁卻很快,自己的程序測試接口的時候也是很慢,慢道最后報請求超時,一直以為是服務器那邊的問題,以為服務器連不上,自己的POST方法不對,最后發現Andrio那邊的速度飛快,很是疑惑。

解決辦法
重啟電腦,再次打開瀏覽器 輸入測試鏈接,反應飛快,自己的程序跑起來也是很快,AFNetworking 3.0上傳圖片 也沒有任何問題,Mac系統的問題造成的嗎????

9.使用 AFNetworking 3.0上傳圖片時由于 fileName沒有格式后綴造成的一系列debug 過程

使用 AFNetworking 3.0上傳圖片時,在成功的回調中返回了 responseObject,但是Json化字典后為 nil :
NSDictionary* dics = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
但是可以看到 responseObject 是有長度的 二進制流,證明是有返回的,只是不是 Json格式的罷了。
于是轉化成字符串打印下:
NSString *jsonStr = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
發現是 HTML 樣式的 字符串,在排查出問題后 發現是由于:

fileName:@"submit"沒有設置格式造成的

PS UTF-8有效率的空間使用(僅就西方語言來講),以及不需要操心字節順序問題使得 UTF-8 成為存儲和交流 Unicode 文本方面的最佳編碼。它也已經是文件格式、網絡協議以及 Web API 領域里事實上的標準了。

NSString 與 Unicode

解決方法 fileName:@"submit.jpg" 即可 。

10.一個真機測試中出現的討厭錯誤提示

Snip20161123_1.png

process launch failed 是因為工程證書配置文件設置出錯,或者找不到對應的配置文件造成的報錯

Snip20161123_2.png

解決辦法: 修改對應的設置即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容