扒虫篇-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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容