iOS重构项目之路

1、整理目录

  • 按照功能模块对整个工程的目录进行分类,比如

2、整理资源文件

  • 删除多余的图片文件,资源文件

    • 图片资源尽量添加到Assets.xcassets
    • 删除项目中未引用的图片的话,可以全部搜索图片名,只要通过[UIImage imageNamed:@"outline"][UIImage imageWithContentsOfFile:@""]xib中引用的图片都可以搜索到。
  • 有一点要注意,那就是如果是加载的动图的话,搜索注意一下walk1.png

    walk2.png walk3.png这种的要搜索walk
  • 对所有图片文件进行压缩
    • 通过第三方工具对所有图片进行一次压缩 ,我这里用的工具是 Squash
  • 删除无用的类,或者重复的类
    • 这个也可以全部搜索,如果项目中使用了这个类,肯定可以搜索出来

3、分离功能模块

  • 因为有多个项目使用相同的功能,所有使用软连接的方式对功能模块进行引用
  • SVN建立一个目录单独存放分离出来单独功能,多个项目通过软连接的方式都可以引用这个文件夹
  • 其他工程通过软连接进行引用,通过拖拽方式进行添加,不勾选copy items if needed
  • 模块中用到的一些公共方法要保证项目中都存在

注意

勾选copy items if needed 会将源文件copy到项目中

不勾选copy items if needed 的话只是建立软连接

4、整理源文件

  • 这里就需要逐个查看源文件了,看过后进行分析整理,这个也是最耗时的,要对整个项目逻辑都理解清楚才能进行抽取或者继承。

    • 该封装的封装,比如说工具类,公共类
    • 该用继承的就用继承,继承大法好啊,可以省去很多代码
    • 通过宏去控制逻辑,比如各种功能开关
  • 最后一步才是终极目标,对整个项目进行分析解耦,让逻辑更加清晰

5、升级各种框架

  • 项目中的框架很多都是旧的,没有使用Cocoapod进行管理,所以只能一个一个替换,期间尝试替换成Cocoapod,奈何网络不行并且问题颇多,最后不得不放弃使用Cocoapod。其实Cocoapod真的挺好的。

6、安全分析

  • 通过解压ipa包,发现里面有很多源文件,可以直接看到内容,有些东西用的plist,或者txt文本,这些东西直接包含在ipa包里,非常之不安全,全部改为使用源文件.h.m ,或者直接预制到加密数据库中。

7、提取URL管理公共类

  • 将所有的URL地址的拼接放到一个单粒类中管理,方便维护。

目前就这么多了,有不足之处欢迎大家指教啊

iOS重构项目之路的更多相关文章

  1. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  2. GitHub上有很多不错的iOS开源项目

    GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个:1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:GitHub自家的函数 ...

  3. iOS开源项目周报0105

    由OpenDigg 出品的iOS开源项目周报第四期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. He ...

  4. iOS开源项目周报1229

    由OpenDigg 出品的iOS开源项目周报第三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Ma ...

  5. iOS开源项目周报1222

    由OpenDigg 出品的iOS开源项目周报第二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. io ...

  6. iOS开源项目周报1215

    由OpenDigg 出品的iOS开源项目周报第一期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. PY ...

  7. iOS Waxpatch项目(动态更新)

    我的iOS Waxpatch项目地址https://github.com/piaojin/iOS-WaxPatch

  8. iOS原生项目中集成React Native

    1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...

  9. 直接拿来用!最火的iOS开源项目

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

随机推荐

  1. springboot集成通用mapper详细配置

    通常,我们利用mybatis写持久层方法.要么按照传统定义mapper方法,定义xml文件的方式,全部手写.要么需要通过mybatis-generator逆向工程插件生成大量的xxxExample文件 ...

  2. B 方块消消乐

    时间限制 : - MS   空间限制 : - KB  评测说明 : 1s,128m 问题描述 何老板在玩一款消消乐游戏,游戏虽然简单,何老板仍旧乐此不疲.游戏一开始有n个边长为1的方块叠成一个高为n的 ...

  3. NKOJ4241 蚯蚓 (【NOIP2016 DAY2】)

    问题描述 输入格式 第一行包含六个整数n,m,q,u,v,t,其中:n,m,q的意义见问题描述: u,v,t均为正整数:你需要自己计算p=u/v(保证0<u<v)t是输出参数,其含义将会在 ...

  4. Unity 游戏框架搭建 2019 (二十三) 备份与版本号&危险的操作

    先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹, ...

  5. 力软敏捷框架 jfGrid 使用例子之一

    百度了下关于力软敏捷框架 jfGrid的教程,基本没有,出来的全是jqGrid.好吧看来只能自己上手了 今天来讲讲列设置属性里数据格式化事件(formatter)的使用 常规的使用方式如上图所示. 先 ...

  6. 《Three.js 入门指南》3.1.1 - 基本几何形状-立方体(CubeGeometry)

    3.1 基本几何形状 立方体(CubeGeometry) 构造函数: THREE.CubeGeometry(width, height, depth, widthSegments, heightSeg ...

  7. php--php设计模式留存

    装饰者模式 <?php interface Decorator { public function display(); } class XiaoFang implements Decorato ...

  8. TP5快速入门

    一.查询 //order支持使用数组对多个字段的排序,例如order(['order','id'=>'desc']) //group方法只有一个参数,并且只能使用字符串. //having方法只 ...

  9. python3(十) iteration

    d = {'a': 1, 'b': 2, 'c': 3} for key in d: print(key, end=' ') # a b c dict的存储不是按照list的方式顺序排列,所以,迭代出 ...

  10. virtual box设置网络,使用nat网络和仅主机(Host Only)网络进行连接

    virtual box设置网络,使用nat网络和仅主机(Host Only)网络进行连接 前言 作为程序员难免要在本机电脑安装虚拟机,最近在用virtual box安装虚拟机的时候遇到了点问题. 对于 ...