zoukankan      html  css  js  c++  java
  • iOS开发debug集锦

    1.添加第三方库时,需要注意使用环境

    duplicate symbol _llvm.embedded.module in:
        /Users/dengw/360Cloud/xcode_code/application/OnceNote/Pods/ShareSDK3/libraries/extends/WeChatSDK/libWeChatSDK.a(MTAEvent.o)
        /Users/dengw/360Cloud/xcode_code/application/OnceNote/Pods/ShareSDK3/libraries/extends/WeChatSDK/libWeChatSDK.a(MTATestSpeed.o)
    ld: 24 duplicate symbols for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

     

    原因:使用的这个第三方SDK的静态库,就是.a后缀的文件,不支持模拟器指令集,因为模拟器是电脑的CPU, x86_64构架。

    解决方案:build或run时,选择“iOS Device”,使用真机调试。或者,添加模拟器使用库。

    2.自定义日志输出

    //自定义日志输出
    #ifdef DEBUG
    //调试状态
    #define XLog(...) NSLog(@"%s line:%d
     %@ 
    
    ", __func__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
    #else
    //发布状态
    #define XLog(...)
    #endif
    

       通过NSLog()可以使用%@格式说明符来输出对象。NSLog()处理%@说明符时,它会询问参数列表中相应的对象以得到这个对象的描述。从技术上讲,就是NSLog()给这个对象发送描述消息,然后对象的description方法生成一个NSString并返回。之后NSLog()在其输出中包含这个字符串。在类中添加description方法就可以自定义NSLog()如何输出对象。

    3.cocoapods使用问题

      使用pod install命令时,卡在Updating local specs repositories不动。

      解决办法:“pod install” 换成“pod install --verbose --no-repo-update”命令,前面的命令被墙了。

    4.The operation couldn’t be completed. (LaunchServicesError error 0.)

      

    解决办法:退出Xcode,退出Simulator,一定要完全退出。

    5.包含的文件找不到

    1)libxml/parser.h file not found

    解决方法:在Xcode菜单 Project->Project Settings的All标签,搜索 Header Search Path ,添加/usr/include/libxml2 即可。

    6.设置UISearchBar取消按钮

    UISearchBar *searchBar = [[UISearchBar alloc] init];
    //显示取消按钮
    [searchBar setShowsCancelButton:YES animated:YES];
    //设置取消按钮的文字(默认是cancel)
    for (UIView *view in [[searchBar.subviews lastObject] subviews]) {
       if ([view isKindOfClass:[UIButton class]]) {
           UIButton *cancelBtn = (UIButton *)view;
           [cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
        }
    }

    7.真机调试team ID not found问题

    问题:No valid signing identities (i.e. certificate and private key pair) matching the team ID “***********” were found.

    注:通常这种情况出现在下载并打开别人项目时

    解决方案:
    1)、将Build Setting里面的Code Signing更改为自己的证书;
    2)、尝试修改target -> General -> Identity -> Team,将其值修改为None(通常不能被修改);
    3)、若2不成功,则针对项目的target复制多一份副本,

      
    选择Duplicate;
    4)、将复制后的target的Team设置为None;

      
    5)、选择当前运行target为复制并更改后的副本,Run;

      

      

    至此,该问题已经解决。

    8.Xcode编译C++

    将.cpp改成.mm

    9.添加类名前缀

    Build Setting页,右侧Project Document-->Class Prefix项

    10.Xcode中无法从Button到View Controller拖线

    原因:xib 或者 storyboard中的那个viewController 跟你要链接的那个Controller没对应上。

    解决方案:在xib 或者 storyboard里,在class里写一下那个类名即可。

    11.使用官方私有API的方式

    法1.只导头文件进去工程。
    法2.拷贝私有框架进工程,再导入头文件。
    法3.使用extern方式添加声明。
    实例:
    @interface NSObject ()
    - (NSString *)originalString;
    - (void)removeLineFromNewTextLineInfoRange;
    - (id)productName;
    + (BOOL)canConvertToObjC2:(id)arg1;
    - (BOOL)taskStopRunning;
    @end

     12.Xcode build failure “Undefined symbols for architecture x86_64”

    解决办法:导入所引起问题的框架。

    ......

    【扫描关注更多干货】

    公众号:xiaoniu

  • 相关阅读:
    日志工具——slf4j
    统一建模语言——UML
    Java基础——网络编程
    Java基础——语法基础
    Java基础——NIO(二)非阻塞式网络通信与NIO2新增类库
    Java基础——NIO(一)通道与缓冲区
    动态加载script文件的两种方法
    asp.net 通用的连接数据库实例代码
    Nginx用户认证配置方法详解(域名/目录)
    js冒泡法和数组转换成字符串示例代码
  • 原文地址:https://www.cnblogs.com/chars/p/5021385.html
Copyright © 2011-2022 走看看