美文网首页
iOS-C模块间条件调用

iOS-C模块间条件调用

作者: 笑破天 | 来源:发表于2023-02-02 22:11 被阅读0次

Case:外部模块有一个函数fb_test,当有外部模块时调用fb_test,没有外部模块时不调用

// 没有模块FB的时候,只extern声明模块FB的函数fb_test,不调用是可以的,调用的话会报错符号找不到
extern void fb_test(void);
// 宏定义只适用于模块内,不能跨模块
//#ifdef B_H
//    NSLog(@"包含");
//#else
//    NSLog(@"不包含");
//#endif
// __has_include是检测工程中是否包含某个头文件,注意:工程中存在的文件不一定被引用了。常用来防止头文件循环导入
#if __has_include("FB/B.h")
    NSLog(@"包含");
    fb_test();
#else
    NSLog(@"不包含");
#endif
// 弱符号:据网上介绍链接器发现同时存在弱符号和强符号,优先选择强符号,如果发现不存在强符号,只存在弱符号,则选择弱符号。据自己测试:跨模块场景下优先选择了本模块,strong和weak设置无效
void __attribute__((weak)) fb_test(void) {
    printf("weak:%s\n",__func__);
}

综上所述:extern+__has_include即可。注意增删framework要clean才能build生效。

相关文章

  • iOS-C模块间条件调用

    Case:外部模块有一个函数fb_test,当有外部模块时调用fb_test,没有外部模块时不调用 综上所述:ex...

  • Java回调机制解读

    模块间调用 在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种: (1)同步调用 ...

  • 回调机制

    模块间的调用关系 在一个应用系统中,无论使用何种语言开发,必然会存在模块之间的调用,调用的方式主要包含: 同步调用...

  • SPI机制

    SPI机制实现模块间通信,比如运营模块aar调用订单模块中的数据,实现模块间解耦在运行期间将接口转换为实现类,达到...

  • Android 模块化之路 模块间调用简易实现方案

    一、背景 还记得上一次分享的模块间通信和调用吗?Android 模块化之路 模块间通信在这个文章里面,我们说到,如...

  • Android组件化学习-路由架构设计

    基础知识:子模块间交互APT介绍与使用 结合之前讲的子模块利用类加载技术、全局map记录模块实现子模块之间相互调用...

  • day9作业

    模块名字homework 调用模块

  • 可视化模块搭建交易策略--深入

    逻辑模块类型1、条件模块该模块用于组合条件判断,模块可以增加多个条件分支。点击小「齿轮」图标,就可以增加条件分支。...

  • 阿里BeeHive框架入门

    这是一个模块化的框架,引入了中间层BeeHive来注册和持有各个模块和服务,模块间的调用通过protocol来解耦...

  • 8.21成长笔记

    一、工作 1.了解脚本模块和调用程序模块的作用,对当前的调用模块做了适配,去适应新的脚本调用方式。 新的脚本调用方...

网友评论

      本文标题:iOS-C模块间条件调用

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