美文网首页
扒虫篇-Bug日志Ⅳ

扒虫篇-Bug日志Ⅳ

作者: 進无尽 | 来源:发表于2017-07-10 11:16 被阅读0次

    </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>

    相关文章

      网友评论

          本文标题:扒虫篇-Bug日志Ⅳ

          本文链接:https://www.haomeiwen.com/subject/hrlqnttx.html