美文网首页
iOS:枚举在组件化工程中的使用注意点

iOS:枚举在组件化工程中的使用注意点

作者: 笑出zhu声 | 来源:发表于2020-04-08 18:52 被阅读0次

某天,开发小王:来帮忙看下,为什么我的按钮样式变了,我什么代码都没改。源码调试没问题,二进制组件工程有问题。

看了下代码,按钮的生成是一个工厂方法,通过传入不同的枚举值(比如:BUTTON_STYLE_DELETE)返回不同的按钮样式,方法的实现在一个基础组件A中,出问题的组件B依赖了这个基础组件A。其中枚举定义示例如下:

typedef NS_ENUM(NSUInteger, BUTTON_STYLE) {
    BUTTON_STYLE_DEFAULT,//默认
    BUTTON_STYLE_FAV ,//收藏
    BUTTON_STYLE_DELETE,//删除
    BUTTON_STYLE_ADD,//加
};

以上代码可能出问题的也就是枚举值了,查看了下这个基础组件的提交记录后发现 BUTTON_STYLE_DELETE前面被插入了新的值 BUTTON_STYLE_BACK

typedef NS_ENUM(NSUInteger, BUTTON_STYLE) {
   BUTTON_STYLE_DEFAULT,//默认
   BUTTON_STYLE_FAV ,//收藏
   BUTTON_STYLE_BACK,//返回
   BUTTON_STYLE_DELETE,//删除
   BUTTON_STYLE_ADD,//加
};

造成在组件A中 BUTTON_STYLE_DELETE值变成了3,而组件B中的 BUTTON_STYLE_DELETE值还是2。枚举值在组件B被编译成静态库时就已经被赋值了,还是之前的值。所以获取到的按钮样式自然有问题。所以在组件化工程中特别是公共组件对枚举做增删操作时一定不要改变原有的值。在组件化工程中除了枚举这种编译期赋值,还有在预编译期赋值的, 如宏定义也是经常出问题的地方,比如公共组件更改了宏定义的值,依赖的组件也需要重新打包。

相关文章

  • iOS:枚举在组件化工程中的使用注意点

    某天,开发小王:来帮忙看下,为什么我的按钮样式变了,我什么代码都没改。源码调试没问题,二进制组件工程有问题。 看了...

  • 组件化方案

    组件化方案引用 在现有工程中实施基于CTMediator的组件化方案 iOS组件化实践(一):简介 iOS组件化实...

  • ios 组件化

    参考 iOS 组件化实践《二》基于现有项目拆分组件化实践 在现有工程中实施基于CTMediator的组件化方案 i...

  • iOS 组件化

    参考:蘑菇街 App 的组件化之路蘑菇街 App 的组件化之路·续 iOS应用架构谈 组件化方案在现有工程中实施基...

  • iOS组件化 03 - xib和Storyboard的使用

    往期回顾 iOS组件化 01 - 本地私有库的使用iOS组件化 02 - 组件中图片资源管理方案优化 1. 使用...

  • Unity导出的Xcode工程嵌入原生iOS工程流程整理

    Unity导出的Xcode工程嵌入原生iOS工程流程整理 注意:ios使用的Unity导出的工程,必须是在Mac系...

  • iOS项目组件化之Cocoapods(二) -- 踩坑与小技巧

    前言 该篇介绍在组件化中遇到的一些坑和一些小技巧使用方面. 系列文章 iOS项目组件化之Cocoapods(一) ...

  • 将iOS项目进行子工程化

    将iOS项目进行子工程化 摘要: 使用静态库或动态库来将开发中的独立模块抽离的方法。 将iOS项目进行子工程化 在...

  • iOS组件化开发实践

    目录: 组件化需求来源 组件化初识 组件化必备的工具使用 模块拆分 组件工程兼容swift环境 组件之间的通讯 组...

  • iOS组件化

    iOS组件化 iOS组件化

网友评论

      本文标题:iOS:枚举在组件化工程中的使用注意点

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