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. iOS isa 和 Class

    一.Runtime 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,是 iOS 系统的核心之一.开发者在编码过程中,可以给任意一个对象发送消息,在编译阶段只是确定了要向接收者发送这条 ...

  2. intelliJ IDEA 教育版下载教程

    ​声明:本教程针对的是在校本科大学生及以上学历学生群体,因为申请账号需要学校的邮箱来进行验证,所以"社会人士"为了对的起"社会"这两个字,还是花点钱买个正版吧! ...

  3. 论redis的内存占用

    目前大部分成程序员都将一些数据放入到了缓存(redis)中,但是你是否对这个redis内存占用了解呢?下面我们就来说一下redis的内存最优使用: 1.我们首先来介绍一下我们在存入大量数据到redis ...

  4. SciPy - 正态性 与 KS 检验

    假设检验的基本思想 若对总体的某个假设是真实的,那么不利于或者不能支持这一假设的事件A在一次试验中是几乎不可能发生的:如果事件A真的发生了,则有理由怀疑这一假设的真实性,从而拒绝该假设: 假设检验实质 ...

  5. 在Android Studio中导入jar包

    #1 下载jar包文件, #2 拷贝到libs目录下 #3 打开你的build.gradle,在dependencies加入如下代码 dependencies {compile files('libs ...

  6. Mac osx下误删了mach_kernel文件,如何找回

    brew install xar 假设当前有一个 pkg 文件"filename.pkg",先使用以下命令解开 pkg: $ xar -xf filename.pkg 解压后发现其 ...

  7. Thinkphp getLastSql函数用法

    如何判断一个更新操作是否成功: $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Mode ...

  8. 将wxpy的登录二维码放到网页上登录

    from flask import Flask, Response from flask.views import MethodView from threading import Thread fr ...

  9. uni_app商城项目(完成)

    总结: 1.uni-app的跨段适配性,真的特别强,完成相关代码的书写,HbuilderX编辑器提供的打包十分方便. 2.开发小程序,H5等移动端开发, 比开发电脑端简单不少,但有时候坑也挺多的. 3 ...

  10. Python Request-学习笔记(1)

    #导入Requests模块:import requests # 然后,尝试获取某个网页.返回的是reaponse对象,可以从这个对象中获取所有我们想要的信息.response = requests.g ...