扒蟲篇-Bug日志Ⅳ


</br>

1. Undefined symbols for architecture arm64:

解決辦法:設置 Enable Testability即可

2. 莫名其面的 duplicate symbol XXXXX in :

解決辦法:other linker flag -ObjC 造成的,有些時候設置other linker flag 為-ObjC會出現多次導入的報錯。

3.不在主線程語句更新UI,會很晚才有提示,有的直接崩潰

[MBProgressHUD showHUD];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
    //網絡判斷
    if (![Reachability networkAvailable]) {
          如果下面這句(回到主線程)不加上,會有問題
         dispatch_async(dispatch_get_main_queue(), ^{
             [MBProgressHUD hideHUD];
             [[MethodTool shareTool]ShowMessage:@"網絡異常"];
             return;
         });
       
    }

4.編譯時找不到系統的string 文件

這是由于 OC和C++匯編時,.m沒有改為 .mm 而搜索不到C++文件造成的Bug。
.m 文件中 #import 的所有 文件會依次檢查自己導入的頭文件是否存在,如果在 test.m中 #import 了testB.h 而 testB.h 中又用到了 C++文件就會出現這個問題。層層引用文件都會再編譯時展開,所以#import 不要亂用,否則會加重編譯時的任務量


即可

5. 打包時LaunchImage-800-Portrait-736h@3x.png pngcrush caught libpng error: 報錯


意思就是讀取啟動 Plus圖片失敗,應該是識別不出來,此時項目是可以正常啟動的。

原因:
圖片不是真的PNG格式,圖片屬性“有無交錯”被誤設置為有了等等。

解決方案基本如下:

  • UI設計師讓其重新生成,

  • 刪除原來的

  • Clean 一下(可以避免很多未知Bug),

  • 再次導入新的文件,(名稱最好改為@3x)

    3.5 inch screen: LaunchImage-700@2x.png
    4.0 inch screen: LaunchImage-700-568h@2x.png
    4.7 inch screen: LaunchImage-800-667h@2x.png
    5.5 inch screen: LaunchImage-800-Portrait-736h@3x.png
    iPad2          : LaunchImage-700-Portrait~ipad.png
    Retina iPads   : LaunchImage-700-Portrait@2x~ipad.png
    

************更新**********

  • Build Settings
  • Packaging
  • Compress PNG Files 改成NO
    即可解決這個問題
    所謂的Compress PNG Files并不是像字面意思那樣為了壓縮減少圖片的大小,而是為了加快應用運行時的速度。Compress PNG Files實際上是將圖片像素的顏色信息,轉換成iPhone能夠更快渲染的格式。
6.超出A部分的點擊沒有反應

因為超出了父視圖的顯示區域。

7. for -in 循環中的報錯
for (NSString *str  in jcrangeArray) {
      if ([str isEqualToString:checkModel.jcfsid]) {
          [jcrangeArray removeObject:str];
        }
    }

NSGenericException :Collection <__NSArrayM: 0x17065b240> was mutated while being enumerated.

You can't modify the array while looping through it with the for...in...
control statement.

  • You cannot delete items from a NSMutableArray while iterating it.

There are several solutions to this:

1. Iterate a copy of the array
2. Use an index-based for loop instead of the for each syntax.
Not copying the array saves you an allocation and a few CPU cycles:

8.真機報錯

明明沒有鎖屏啊,這.......
解決辦法:拔掉手機重新連接到電腦上。

9.模擬器運行報錯

I had to close xcode and delete derived data. Just delete this folder

~/Library/Developer/Xcode/DerivedData/

退出 Xcode,清除DerivedData數據。

10.模擬器運行報錯

Undefined symbols for architecture i386:
"OBJCCLASS_$_JPUSHRegisterEntity", referenced from:
objc-class-ref in ZFHNotificationManager.o
"OBJCCLASS_$_JPUSHService", referenced from:
objc-class-ref in ZFHNotificationManager.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解決辦法:
極光推送SDK 從3.0.0版本開始不再支持i386模擬器,在升級文檔中有說明
選擇6、6s、7,及這些的plus的模擬器
這些不屬于處理器為i386的模擬器
iPAD模擬器也要注意選擇 非 i386 的模擬器
</br>

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

推薦閱讀更多精彩內容