IOS开源框架SJFramework

IOS开源框架SJFramework

SJFramework是最近一段时间做项目总结出来的用于IOS工发的框架,暂时还不敢说有多好、使用有多方便,因为没有经过大规模的项目和研发人员的使用,但报着开放的态度,将此框架发布出来,以希望能够有更多的人参与进来,不断地改进、优化;

此框架适用于外包项目以实现快速迭代,同时也适用于产品的研发,为什么要这样区分?难道外包项目和产品研发有很大区别?没错!根据我多年的外包及产品研发经验,总结出几个方面的区别:


  • 外包项目要求周期不固定(根据合同),但代码可重复使用,上个项目可用到下个项目中
  • 外包项目模块化要求并不高,可能1〜2人合作开发完成
  • 外包项目一般不太考虑可维护性,可能没有后续版本
  • 外包项目一般不太考虑性能以及内存问题,因为大多数客户不懂

  • 产品研发要求周期基本固定(互联网公司是2周1迭代),迭代过程,基本都是新需求,此时能够复用的代码不多,但对框架要求高
  • 产品研发模块化要求高,可能10〜50人合作开发
  • 产品研发太要考虑可维护性,可能每周都有新版本
  • 产品研发太要考虑性能及内存问题,因为领导和产品懂

为何说产品研发对框架要求高?试想1年52周,2周1迭代,就按1个分支来算,52/2=26个版本,团队人员的更替,需求的变更,1年后,产品的代码是什么样子的,完全取决于框架及研发人员的基本水平(这里的水平并不是指高中低级,而是代码规范、注释等),哪怕初工程师,只要代码规范、注释完善,回过头看1年前的代码,同样会很清晰.

上面只是拿1个分支来举例子,其实当今互联网的很多个知名app都是多个分支同步开发,而且团队人员也是特别多,微信、支付宝我就不说了,以前带的飞信团队,仅IOS研发就近40人,Android50多人,再说好大夫,听朋友说Android研发也有50多人,链家自如每个平台10几人,说明什么?互联网产品需求大、对迭代要求快,研发天天加班,也赶不上产品提需求的速度,况且研发有考核指标,人家产品也有考核指标.

说这么多,只是1个目的,能够封装一个简单可复用的框架,方便外包,也方便产品研发,不断改进,方便你我和大家!

框架的目的是做为程序的骨干,以支撑各个功能的正常运转,同时框架的目的是将不可变的部分抽出来,从而成为骨干,就像人体一样,骨骼是支撑的核心,皮肉是依附于骨骼之上而存在,框架也是如此,所有的业务模块、功能都是在框架下存在并发挥作用。

前几年做的大型项目中,所涉及包含的东西太多,框架虽好,但由于协议本身对语言的高要求(protobuf采用c++,对研发人员要求稍高),不适用于现在的研发人员,因为大多数刚毕业3〜4年的同学都不懂c/c++,而且成本也相对高些,因此我将一些核心思想抽离出来,形成现在的SJFramework.

SJFramework是封装在一个单独工和当中,包含:
- 主体框架包含对AppDelegate的封装,将第三方涉及的生命周期相关的内容,统一封装
- 对各主流第三方SDK的简单封装(极光、分享、支付、友盟)这些都是外包和做产品研发必须的
- 模块化开发框架MVVM及统一模块管理器
- ViewController等基类封装
- 第三方库封装(网络请求、图片处理、输入框遮挡处理等)
- 各种调试方法封装(日志、函数时间检测、界面内存泄露检测封装)


框架截图

下面逐一介绍下:
1、主体框架包含对AppDelegate的封装AppDelegateBase:
AppDelegateBase就是将AppDelegate该干的活都给干了,以后你的AppDelegate就继承自AppDelegateBase就行了,就这个目的,将生命周期相关的函数与第三方sdk关联好,提供相应接口,同时需要注册一些业务相关的实现对象。看看如何使用吧

使用代码

2、对各主流第三方SDK的简单封装(极光、分享、支付、友盟)
其实这些都是在AppDelegateBase当中封装的,增加了几个分类AppDelegate+pay.h(支付与分享)、AppDelegateExten.h(极光、友盟、UUID创建、网络监听)

3、模块化开发框架MVVM及统一模块管理器
模块化开发,为什么使用MVVM,因为现在的小孩子只知道这些,前两年的小孩子只知道MVC,希望用这个能够让更多人容易上手,网上流传的MVVM基本上是独立的,无法实现统一管理以及对程序生命周期的必要处理,比如当程序启动或者登录成功后,各个模块可能会有些业务需要做,当注销后,也会有些业务做,如何统一管理各个模块?这就增加了个统一模块管理器对象ViewModelManagerBase是基类,封装了模块的存储、协议调用等,所有的模块都要基于IViewModelManager协议,这样就可以实现统一管理.

这里写图片描述

4、ViewController等基类封装
封装了BaseViewController、BaseTabbarController、BaseNavigationViewController,其中BaseViewController将Toast简单封装、增加内存泄露检测、增加block回调属性,用于前后视图回调及传递数据,避免每个ViewController都写block回调.
3个界面相关封装

5、第三方库封装(网络请求、图片处理、输入框遮挡处理等)
这里写图片描述

6、各种调试方法封装(日志、函数时间检测、界面内存泄露检测封装)
这里写图片描述

注意:开源框架地址:https://github.com/hackxboy1985/SJFramework.git

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值