• OC项目接入swift三方库遇到的问题


    想要在项目中引入网络抓包库netfox

    由于要引入swift库,pod需要加入

    use_frameworks!

    加入这个会是pod库的引入方式有libPods-XXX.a的静态库变成Pods_XXX.framework方式

    在项目中使用的时候使用

    #import "netfox-Swift.h"进行引入

    #import "XXX-Swift.h"

    确保测试环境使用

    #ifdef DEBUG
    // 测试环境
    [NFX.sharedInstance start];
    #endif

    在加入use_frameworks!时遇到一些问题

    第三方库显示有问题

    原来引入方式#import "SDWebImageManager.h"
    需要改成#import "SDWebImage/SDWebImageManager.h"

    原来引入方式#import <YYKit.h>
    需要改成#import <YYKit/YYKit.h>

    由于用到了CocoaLumberjack第三方库会报错误

    CocoaHTTPServer报错implicit declaration of function 'LOG_OBJC_MAYBE' is invalid in C99

    //#import "DDLog.h"
    #import <CocoaLumberjack/CocoaLumberjack.h>

    这库用了CocoaLumberJack,而且是1.x版本的,CocoaLumberjack在2.0更新的时候,改动挺大,官方也给出了1.x迁移到2.x的更新步骤,现在已经到3.5.3版本了,但是CocoaHTTPServer代码中用的还是1.x的方法。因为库已经不再更新,只能自己去修改源代码了。

    报错:

     
    image.png

    出错文件:

    CocoaHTTPServer/HTTPLogging.h
    

    这里用的还是1.x的方法:

    #define DD_LEGACY_MACROS 0
    #import "DDLog.h"
    

    修改方法:

    1--将上面两行改为

    #import <CocoaLumberjack/CocoaLumberjack.h>
    

    2--然后增加两个宏定义:

    #define HTTP_LOG_OBJC_MAYBE(async, lvl, flg, ctx, frmt, ...) \
    do{ if(HTTP_LOG_ASYNC_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, nil, sel_getName(_cmd), frmt, ##__VA_ARGS__); } while(0)
    
    #define HTTP_LOG_C_MAYBE(async, lvl, flg, ctx, frmt, ...) \
    do{ if(HTTP_LOG_ASYNC_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, nil, __FUNCTION__, frmt, ##__VA_ARGS__); } while(0)
    

    3--然后把整个头文件里的:
    所有LOG_OBJC_MAYBE改成HTTP_LOG_OBJC_MAYBE
    所有LOG_C_MAYBE改成HTTP_LOG_C_MAYBE

    4--重新编译,错误消失

    原因:

    1.x版本,是通过引入DDLog.h头文件来引入DDLegacyMacros.h。2.x版本之后使用的是DDLogMacros.h,使用的是新的LOG_MAYBE方法,废弃掉了LOG_OBJC_MAYBE方法。


    链接:https://www.jianshu.com/p/b693d660acc1

    会报library -l XXX not found的问题

    需要将项目配置中的 "-l\"AFNetworking\"", 删除

    "-l\"AFNetworking\"",
    "-l\"CocoaLumberjack\"",
    "-l\"FMDB\"",
    "-l\"MJExtension\"",
    "-l\"MJRefresh\"",
    "-l\"Masonry\"",
    "-l\"NJKWebViewProgress\"",
    "-l\"SDWebImage\"",
    "-l\"WeChatSDK\"",
    "-l\"YYKit\"",

  • 相关阅读:
    tomcat虚拟机配置
    日期时分秒毫秒+3位随机数
    springmvc action访问路径不带项目名
    nginx 配置模板
    AES加密
    spring-mvc里的 <mvc:resources> 及静态资源访问
    MySQL——事务(Transaction)
    mysql索引
    < aop:aspect>与< aop:advisor>的区别
    annotation-driven
  • 原文地址:https://www.cnblogs.com/qiutangfengmian/p/16261785.html
Copyright © 2020-2023  润新知