iOS重构项目之路
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重构项目之路的更多相关文章
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- GitHub上有很多不错的iOS开源项目
GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个:1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:GitHub自家的函数 ...
- iOS开源项目周报0105
由OpenDigg 出品的iOS开源项目周报第四期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. He ...
- iOS开源项目周报1229
由OpenDigg 出品的iOS开源项目周报第三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Ma ...
- iOS开源项目周报1222
由OpenDigg 出品的iOS开源项目周报第二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. io ...
- iOS开源项目周报1215
由OpenDigg 出品的iOS开源项目周报第一期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. PY ...
- iOS Waxpatch项目(动态更新)
我的iOS Waxpatch项目地址https://github.com/piaojin/iOS-WaxPatch
- iOS原生项目中集成React Native
1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...
- 直接拿来用!最火的iOS开源项目
1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...
随机推荐
- centos7中安装mysql
centos7中安装mysql网上已经很多资源了,我就不在赘述了.我这里只是记录下我安装的时候出现的一些问题. 原文:https://www.cnblogs.com/bigbrotherer/p/72 ...
- POJ 1163 数字三角形
Portal:http://poj.org/problem?id=1163 DP经典题,IOI94考题,在各大OJ上都有 #include<iostream> #include<al ...
- A - 无聊的游戏 HDU - 1525(博弈)
A - 无聊的游戏 HDU - 1525 疫情当下,有两个很无聊的人,小A和小B,准备玩一个游戏,玩法是这样的,从两个自然数开始比赛.第一个玩家小A从两个数字中的较大者减去两个数字中较小者的任何正倍数 ...
- MyBatis 学习笔记(2)
1.执行SQL时传递多参数 如果 parameterType 使用 map 类型,即 parameterType="map",那么可以使用注解(@Param)方式传递参数,而最好不 ...
- Javascript 入门 必备知识点
1.如何得到html的input标签的值: (1). $('#id').val(); (2). $("#id").attr("value"); 2.javasc ...
- 使用webview查找元素,appium查找web页面元素
9 webview查找元素 9.1 webview 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面.它使用的内核是webkit引擎,4.4版本之后,直接使用 ...
- 2020 PHP 初级 / 基础面试题,祝你金三银四跳槽加薪 (适合基础不牢固的 PHPer)
1.PHP 语言的一大优势是跨平台,什么是跨平台? PHP 的运行环境最优搭配为 Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如 windows.Linux 等)上配置,不受操作 ...
- PHP中debug基本方法
一.检查是否有语法错误 php -l test.php 二.基本调试基本调试 API: var_dump($var);print_r($var);echo $var; 基本的配置: display_e ...
- 一个spring 基本知识的微博(怎么加载多个xml、多个property文件、aop配置、监视器)
http://blog.sina.com.cn/s/blog_61c5866d0100ev44.html
- 数据结构和算法(Golang实现)(2)简单入门Golang-包、变量和函数
包.变量和函数 一.举个例子 现在我们来建立一个完整的程序main.go: // Golang程序入口的包名必须为 main package main // import "golang&q ...