總有一些報錯是你不愿意看見的,可是還是應該昂首挺胸去面對吧!
很多莫名其妙的Bug都是自己隱蔽的設置引起的,沒有把整個流程理一遍是無法發現的。沒有莫名其妙的Bug,只有未理清的思路。(持續更新中.......)**
1.缺少系統類庫的支撐而報的 64位模擬器不兼容
之前在集成調試 AsReader的時候,遇到的bug,是一家日本企業生產的產品,官方文檔比較簡單而且還不寫清楚,表面上看是報的不兼容 64位模擬器的錯誤,我用真機調試還是報相同的錯誤。最后發現少了系統的類庫
解決方法:導入ExternalAccessory.FrameWork,
Communicate with accessories connected to a device by the Apple Lightning connector, or connected wirelessly through Bluetooth.
與由蘋果閃電連接器連接到設備,或通過藍牙無線連接配件進行通信。
添加后錯誤少了依然有報錯:
“undefined symbol: __gxx_personality_v0” 是比較常見的一種報錯,是因為在linux下編譯C++程序,如果使用gcc命令進行編譯,gcc無法連接到c++庫,所以會出現錯誤。
解決方法:導入libstdc++.dylib 即可解決。
2.模擬器運行時出現如下提示:
解決方法:如果 Clean 重新運行;關閉項目,重新打開,Clean重新運行都不解決問題的話,試著 重置一下模擬器吧,那會解決這個問題。
3.Xcode 8 項目在 Xcode7上的模擬器運行時出現如下提示:
解決方法:在 Main.storyboard 的右邊的編輯區設置如下即可:
4.Xcode 8適配
XIB和Storeboard適配
在Xcode8之前,創建一個XIB或SB文件,都是一個600*600的方塊XIB文件。在Xcode8之后,創建的XIB文件默認是6s尺寸的大小。
但是Xcode8打開之前舊項目的XIB或SB文件時,會彈出下面的彈框, 這時候一般直接選擇Choose Device即可。
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文件中下面一行字段。
5.模擬器運行時出現如下報錯
解決方法
6.C++語音匯編時有時會出現這個 頭文件找不到的情況
解決辦法: 把有C語音的地方 .m 改為 .mm 即可。
7. 大華視屏監控App,由Xcode7 遷移到 Xcode 8 上出現的Bug
這個Bug可把我惡心壞了,弄了整整一天,心力交瘁,字面意思上看是 一個 .a 不支持 arm64
我們查看下靜態庫所支持的架構,打開終端輸入查看命令lipo - info xxx.a , (輸入.a 的完整路徑)結果如下:
這樣的就可以看到 .a 所支持的架構了,我查出的報錯的 .a 根本沒問題,而且人家原本的Dome 是可以跑起來的。最后我聯想到了工程設置可能是問題的所在,經過反復的比對,最后發現了坑爹的Bug,所在。
解決辦法: 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 領域里事實上的標準了。
解決方法 fileName:@"submit.jpg" 即可 。
10.一個真機測試中出現的討厭錯誤提示
process launch failed 是因為工程證書配置文件設置出錯,或者找不到對應的配置文件造成的報錯
解決辦法: 修改對應的設置即可。