MG--错误总结(不定时更新)

作者: Mg明明就是你 | 来源:发表于2016-12-27 16:57 被阅读275次

    总结自己在开发过程中遇到的BUG


    第1和第2个错误
    第3个错误
    第4个错误 第5个错误
    第6个错误
    第7个错误
    第8个错误
    第9个错误 第10个错误


    第11个错误

    ![第12个错误]](http:https://img.haomeiwen.com/i1429890/b982f103cc502475.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    第十三个错误:

    第十三个错误
    • 错误描述:控制器不能加载到UITableView
    • 解决方法:storyBoard的控制器与写代码的控制器不对应,改为对应的控制器即可。。

    第十四个错误:iOS9 https协议

    第十四个错误
    • 原因:从iOS9起,新特性要求App访问网络请求,要采用 HTTPS 协议。
    • 解决方法:如果仍想要使用HTTP协议,解决办法如下:
      • 1,在Info.plist中添加 NSAppTransportSecurity 类型 Dictionary ;
      • 2,在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型Boolean ,值设为 YES
    原因

    第十五个错误:(直接拖入动画框架POP的错误)

    第十五个错误
    • 第十六个错误:网络请求出错


      第十六个错误
      • 解决方法

    第十七个错误:NAN的错误

    第十七个错误
    • 解决方法

    第十八个错误:未定义的错误

    第十八个错误
    • 原因:没有定义某个属性或者类
    • 解决方法:找到这个东西,定义一下即可

    第十九个错误:bitcode的错误

    第十九个错误:bitcode的错误
    • 原因:得到的信息是引入的一个第三方库不包含bitcode。

    • 解决方法:要么让第三方库支持,要么关闭target的bitcode选项。如果这个库不支持bitcode,暂时只能设置ENABLE_BITCODE为NO。
      ![Upload Snip20160601_24.png failed. Please try again.]

    • 补充:理解Bitcode:一种中间代码。实际上,在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。


      Snip20160601_25.png

    第二十个错误:真机调试下静态库架构问题

    第二十个错误:真机调试下静态库架构问题
    Undefined symbols for architecture x86_64:
      "_OBJC_CLASS_$_WKWebView", referenced from:
          objc-class-ref in BSWebViewController.o
    ld: symbol(s) not found for architecture x86_64
    Undefined symbols for architecture x86_64:
      "_OBJC_CLASS_$_BSWebViewController", referenced from:
          objc-class-ref in BSMeController.o
    ld: symbol(s) not found for architecture x86_64
    
    解决真机调试下静态库架构问题


    第二十一个错误:使用FMDB遇到的错误(SWift)

    Snip20160601_28.png
    • 原因:类型的表达式是不明确的,没有更多的上下文
    • ✅解决方法:找到这个东西,让它类型明确即可


      解决方法.png

    第二十二个错误:设置状态栏出现的警告错误

    • 第二十二个错误:设置状态栏出现的警告错误
    • ❎错误描述:CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
    • 原因:View controller-based status bar appearance设置为NO
    • ✅解决方法:修改方式将View controller-based status bar -appearance设置为YES,然后使用新的方式来实现状态栏的样式。
    - (UIStatusBarStyle)preferredStatusBarStyle;
    - (UIViewController *)childViewControllerForStatusBarStyle;
    - (void)setNeedsStatusBarAppearanceUpdate
    


    第二十三个错误:莫名错误--静态库不支持某种架构

    • ❎错误:


      错误描述
    • ✅解决


      解决

    第二十四个错误:莫名错误--duplicate symbols for architecture x86_64(重复编译)

    第一种情况:在工程中重复导入了某一个类或文件,这一般出现在你添加第三方库的时候比较多,在不知道的情况下又导入了一次相同的类。
    第二种情况:工程中在#import引入头文件的时候,将#import "XXX.h" 写成了#import "XXX.m"。错误的引入.m头文件 ```


    第二十五个错误:(友盟分享)_rkl_NSExceptionForRegex in MOBFoundation

    • ❎错误描述:
    Undefined symbols for architecture x86_64:
      "_u_errorName", referenced from:
          _rkl_NSExceptionForRegex in MOBFoundation
          _rkl_userInfoDictionary in MOBFoundation
          _cm_rkl_NSExceptionForRegex in AGCommon
          _cm_rkl_userInfoDictionary in AGCommon
      "_u_strlen", referenced from:
          _rkl_userInfoDictionary in MOBFoundation
          _cm_rkl_userInfoDictionary in AGCommon
      "_uregex_setText", referenced from:
          -[MOBFRKLBlockEnumerationHelper initWithRegex:options:string:range:error:] in MOBFoundation
          _rkl_performRegexOp in MOBFoundation
          _rkl_clearCachedRegexSetTo in MOBFoundation
          -[CMRKLBlockEnumerationHelper initWithRegex:options:string:range:error:] in AGCommon
          _cm_rkl_performRegexOp in AGCommon
          _cm_rkl_clearCachedRegexSetTo in AGCommon
      "_uregex_start", referenced from:
          _rkl_performRegexOp in MOBFoundation
          _rkl_findRanges in MOBFoundation
          _rkl_search in MOBFoundation
          _cm_rkl_performRegexOp in AGCommon
          _cm_rkl_findRanges in AGCommon
          _cm_rkl_search in AGCommon
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    • ✅解决(other link)-licucore


      Xcode设置
    • 小结:
      • 可能会遇到这几种错误:
    Undefined symbols for architecture armv7
    Undefined symbols for architecture armv7s
    Undefined symbols for architecture arm64
    Undefined symbols for architecture i386
    Undefined symbols for architecture x86_64
    
    • 检查静态库的CPU架构支持命令:
      lipo -info xxxxx.a
    • 找出不支持arm64的静态库
      find . -name *.a -exec lipo -info "{}"

    第二十六个错误:Xcode8运行报错--签名必须加入某个team

    • ❎错误描述
      • Xcode8运行报错.png
    • ✅解决
      • 解决.png

    第二十七个错误:Swift3.0归档报错--需要强引用

    • ❎错误描述
      • 归档.png
    • ✅解决
      • 删除[weak self]即可

    第二十八个错误:使用第三方框架PopoverSwift报错--需要约束

    • ❎错误描述
      • 使用第三方框架PopoverSwift报错.png
    • ✅解决
      • 将按钮加入某个View即可,反正得让按钮有父控件

    第二十九个错误: Swift3.0使用NSUserDefaults存储Bool类型

    • ❎错误描述
      • [NSUserDefaults setObject:forKey:]: attempt to insert non-property list object
        NSUserDefaults存储.png
    • ✅解决
      • 首先, 认为这种错误的原因是插入了不识别的数据类型,NSUserDefaults支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型。
        然而并不是这样,我在取值之前先要存储一下该Bool类型,代码展示
    SaveTools.mg_SaveToLocal(value: isAddMoveAnimation, key: "isAddMoveAnimation")  // 就是这句代码,先要存储一下该Bool类型
    isAddMoveAnimation = SaveTools.mg_getLocalData(key: "isAddMoveAnimation") as! Bool
    titleLabel?.text = titleStr ?? "其他工作"
    if isAddMoveAnimation == false {
            self.addMoveAnimation(label: titleLabel!)
            isAddMoveAnimation = true
            SaveTools.mg_SaveToLocal(value: isAddMoveAnimation, key: "isAddMoveAnimation")
    }
    

    第三十个错误: Swift3.0使用导航栏给item添加约束报错

    • ❎错误
      • 描述:当给导航栏的左边Item或右边Item以及title自定义控件,并且自定义按钮添加了约束,点击push其他控制器就会报错。。。 (如下错误)
    • ✅解决:删掉约束,使用frame
      • 解决方法



    • 第三十一个错误: 真机使用KVO报错

      • ❎错误
        Terminating app due to uncaught exception 'NSRangeException', reason: '
        <chart2.HomeVC 0x17d148c0> for the key path "frame" from
        <chart2.HomeVC 0x17d148c0> because it is not registered as an observer.'
        First throw call stack: 内存泄漏
        (0x297a3137 0x37833c77 0x297a307d 0x2a43fcc9 0x2a43f6db 0x103f2c 0x1040dc 0x3784e1a9 0x296b2729 0x2cdd2fb9 0x2976926d 0x29766951 0x29766d53 0x296b29a1 0x296b27b3 0x30e8b1a9 0x2ce3d695 0x157054 0x37ddbaaf)
      • 错误.png
    • ✅解决:找到对应的监听者,之前移除的是self.removeObserver(self, forKeyPath: "frame"),报错。所以不要移除错了
    • 找到对应的监听者,不要移除错了,否则就会报错

    第三十二个错误: 项目一段时间没用,莫名报错

    • ❎错误
      clang: error: no such file or directory: '/Users/ZBKF001/Desktop/工作目录/Chart/Chart/LMReport/NSIndexPath+LMReport.m' clang: error: no input files
    • ✅解决:莫名其妙的错误 clear 强退XCode 删除缓存

    • 第三十三个错误:设置导航栏全局属性的BUG

    • ❌错误

      • 代码展示错误.png
    • 错误描述:reason: '-[_SwiftValue pointSize]: unrecognized selector sent to instance 0x600000442550'

      错误描述.png
    • ✅解决:仔细看注释掉的代码和新增的代码

      • 我了个去,这也算是个BUG

    第三十四个错误:Swift导入编译文件两次的错误

    • ❌错误
      • 错误描述
      • 错误描述:reason: “filename xxx Used twice”
    • ✅解决:在Build Phases -> Compile Sources 删除其中一个编译的文件即可
      • 删除其中一个编译的文件

    第三十五个错误:证书真机安装安装失败

    • ❌错误


      证书真机安装安装失败.png
    • ✅解决:在项目下Edit Scheme -> Run -> build Configuration 不小心调成release模式了 改回来Debug就行了.


      改回来Debug.png

    第三十六个错误:打包上传失败

    • ❌错误:因为没有在iTunes connect 构建版本,那些ID和套装ID未填写,就打包上传,报此错误


      因为没有在iTunes connect 构建版本,那些ID和套装ID未填写,就打包上传.png
    • ✅解决:在iTunes connect 构建版本就行了.然后再上传就ok了.

    第三十七个错误:Modal错误

    • ❌错误:which is already presenting *
    Warning: Attempt to present * on * which is already presenting *
    Warning: Attempt to present (要被presented的控制器)  on (哪个控制器来presenting) which is already presenting (已经被presenting的控制器)
    self: 是被presented出来的控制器,
    self.presentingViewController: 看看是谁把self给presenting出来
    RPLog(@"%@ - %@", self.presentingViewController, [UIApplication sharedApplication].keyWindow.rootViewController);
    打印结果: <RPNavigationController: 0x789d0330> - <RPNavigationController: 0x789d0330>```
    `ProductionReport[98607:30384979] Warning: Attempt to present <UIAlertController: 0x7f8d0ae431b0>  on <ProductionReport.QRCodeViewController: 0x7f8d0ac04af0> which is already presenting (null)`
    - ✅解决:
      - 结论: poopver中的控制器, 其实是通过窗口的根控制器presenting出来的, 所以要想窗口的根控制器再presenting其他控制器,需要先dismiss掉原来presenting的控制器,

    相关文章

      网友评论

        本文标题:MG--错误总结(不定时更新)

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