IOS移动端应用开发架构总结,移动IOS开发框架

4747 795 2022-10-16

本文讲述了IOS移动端应用开发架构总结,移动IOS开发框架。

写在前面

在移动应用APP开发中,架构是一个相当重要的部分,它就相当于我们盖楼时候的根基一样,一个好的架构模式,能让你的APP应对所有产品经理带来的狂风暴雨,反之,一个较差的架构,还没等你开发完毕可能就会面临到处都是奔溃的风险。

架构的重要性

我们开发的APP并不是一次性买卖,后期需要我们自己不断的去更新迭代;一个好的APP架构模式能让我们在后期迭代过程中减少开发的风险,有效的提高效率,不会因为UI的变化让我们去花费很多时间去做很多重复的工作。不论是之前的MVC模式,还是现如今的MVP/MVVM这些前端架构,都在为减少后期维护的成本而做着努力。

废话不多说,下面是我平时工作中总结出的架构模式,它并不完美,甚至还存在很多缺陷,但它对于开发一般的APP已经足够了

提炼出的业务逻辑

我将APP现有的架构按照垂直方向从上向下进行分层,分别为:

  • 视图UI(这里用ViewController代替);

  • Business逻辑业务处理层;

  • Base数据层;

如下图所示:


image.png

一、Base原始数据层:

进行原始数据的读写,主要涉及一些和业务无关,且可作为公共资源来访问的数据

  1. 读写网络最原始数据

  2. 读写文件系统、数据库中的原始数据

  3. 读写蓝牙底层数据交换信息
    ....

下面以读写网络数据为例:
   用于和网络进行数据交换,最底层,也是最直接的方式,拿到的网络数据是最原始的。因为在当我们访问网络的时候,每一个URL对应一个远程API接口,返回的数据也是和这个URL一一对应的,所以,当要实现网络访问时,我们希望能够看到URL,就立马知道访问这个URL地址需要的参数以及返回数据。参考文章【IOS开发中Block与Delegate对于访问网络的差异】在IOS中,有代理和Block这两种方式去处理网络请求,block的方式与代理的方式相比,其有着处理数据更加简洁,更加灵活的特性,而且我们把底层数据作为元数据,并不需要处理,所以,底层使用block的形式比代理的方式好,代码如下:

+ (void)fetchDriverInfoSuccess:(void (^)(UCARDriverInfoDTO *))success failure:(void (^)(NSDictionary *, NSDictionary *, NSError *))failure {
   UCARHttpRequestConfig *config = [UCARHttpRequestConfig defaultConfig];
   config.subURL = UCAR_HTTP_PERSON_INFORMATION;
   [[UCARHttpManager sharedManager] asyncGETWithConfig:config success:^(NSDictionary * _Nonnull response, NSDictionary * _Nullable request) {
       NSDictionary *result = response[UCARHttpResponseKeyContent];
       UCARDriverInfoDTO *dto = [UCARDriverInfoDTO parse:result];
       if (success) {
           success(dto);
       }
   }failure:^(NSDictionary * _Nullable response, NSDictionary * _Nullable request, NSError * _Nonnull error) {
       if (failure) {
           failure(response,request,error);
       }
   }];}

二、Business层主要功能是:

  1. 负责承接上下层

  2. 处理业务逻辑

  3. 缓存数据

在business层,我这里利用delegate的方式向上传递数据,在Business层分别建立了2个基类和一个回调代理协议:

  • UCARBusinessBaseService

  • UCARBaseModel

  • UCARBusinessBaseDelegate

image.png

子类Business直接继承UCARBusinessBaseService类进行业务处理,当网络请求成功后,会回调这2个方法:

//处理business层数据失败回调- (void)didFailToDealWithBusinessData:(NSDictionary *)failInfo;

/// 处理business层数据成功,返回一个成功的baseModel/// @param model 基类model- (void)didSuccessToDealBusinessData:(UCARBaseModel *)model;

在对于需要网络请求的ViewController层,需要实现这个代理协议来等待接收网络请求反馈,然后进行处理,如果ViewController层的子View需要数据,那么我们直接传递传递business对象,如下图:


image.png


子view拿到business对象后,可以调用对应的业务处理函数,把业务处理继续下层到business,使得View、viewController的职责更加单一。
原则上来说:一个business只处理一个ViewController上的数据逻辑以及其上的view数据,但如果存在多级页面跳转,并且公用同一份数据的情况,那么,直接传递接口数据到另一个ViewController2,然后VC将此数据丢到其对应的BusinessService2中进行业务转换,当然,BusinessService2中有所有关于ViewController2的网络请求以及业务处理逻辑。

三、视图层主要功能是:

  1. 用户交互的处理

  2. 视图数据的展示

这一层主要是负责数据展示,也是我们开发APP端写的最多的东西

这一层主要核心思想是实现数据与视图的分离,分离程度越高,那么将来维护起来成本越小,比较重要的一个环节。下面我把上面的business层的数据详细展开来进行讨论,如下图:


IOS视图与数据分离处理.png

我们的目的是实现视图与数据相分离,如图所示:

1.视图控制器
主要作为一个容器视图,用来控制子视图的布局,交互;其持有BusinessService的对象。
2.视图:
每一个复合视图都必须有一个数据源,数据源包含了本视图所需的所有数据字段。
3.business模块
包含范文base层接口的对象,同时也作为转换器,可以实现将base层数据转为view层的数据,同时也包含一些页面需要的公共方法。

因为business层的存在,其实我们已经可以做到视图和数据相分离了。在开发的时候,我们可以先按照UI,把所需要的数据先在自己的business中生成,而不用等待接口过来和你对接。等接口那边完毕以后,在business对接后台数据即可。

一、ios开发运用到的技术

1、ios开发语言

IOS用的开发语言是Object-C,Object-C通常写作Objective-C或者Obj-C或OC,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。OC语言作为面向对象的语言,具有面向对象的语言特性,如封装、继承、多态。他具有静态语言的特性(如C++),又有动态语言的效率(动态绑定、动态加载)。

2、ios开发系统

ios开发的操作系统是Mac,也就是说只能在装有Mac OS上的电脑上开发app,意味着要么你需要买一台苹果电脑,要么你需要利用虚拟软件比如vmware在你装有windows或者其他系统的电脑上装上苹果系统才行。

3、ios开发环境

cocoa是苹果建立的开发环境,基本上所有你需要的东西都要借助于cocoa。

4、ios开发工具

苹果app开发工具是Xcode,是苹果公司为苹果开发者提供的专用ios app开发工具,是运行在Mac OS上的集成开发工具(IDE),Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。自从Xcode诞生以来,已经有了28个版本。也就是说几乎所有应用程序的开发工具都是Xcode。

5、ios开发框架

框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件。一个共享库定义的方法或函数可以被应用程序调用。

IOS提供了很多可以在应用程序里调用的框架。要使用一个框架,需要将它添加到你的项目中,你的项目才可以使用它。许多应用程序都使用了如Foundation、UIKit、和Core Graphics这些框架。根据你为应用程序选择的模版,相关的框架就已经被自动引入了。如果默认加入的框架不能满足你的应用程序的需求,你也可以加入需要的框架。具体的框架介绍详见:https://www.jianshu.com/p/0f3313430c19

二、如何开发ios软件?

如何开发ios应用?熟悉了以上介绍的苹果app开发语言、工具,就可以在开发环境上编写应用程序代码了,后面学习深入一点的东西,比如一些开发框架的使用。在你真正写出可用的程序之后,你需要对你的应用程序进行真机测试,这时候,你需要拥有IOS操作系统的设备,比如Iphone、Ipad、Itouch等。

三、其他相关的app开发知识

1、前端开发

不管你是ios开发工程师,还是安卓开发工程师,一些前端开发的知识(html、css、js、jquery、jsp)也是需要掌握的。虽然做的是移动端开发,但是在开发过程中难免会遇到看源码排查问题的情况,虽然前端知识不要做到精通,但是起码有个大概的了解,能够看懂代码的大概意思,应该是较低要求了。

2、数据库

后端程序员都需要对数据库的数据进行操作,需要熟悉数据库原理,因为底层的原理其实都差不多,然后就是SQL语句的熟练运用就可以了,目前主流的数据库有:MySQl、SQL Server、Oracle,刚开始的时候建议先从简单的入手(MySql),再对Oracle慢慢研究。

3、算法、服务器、网络协议

无论从事哪一个领域的软件开发,都要有扎实的计算机基础知识,包括:计算机网络( TCP/IP协议、HTTP协议等),基本算法(数据结构),操作系统(架构)、服务器(linux)相关知识等。

上文就是小编为大家整理的IOS移动端应用开发架构总结,移动IOS开发框架。

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)Finclip软件分析、比较及推荐。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是小程序容器,一文帮你搞透彻,小程序容器框架
下一篇:IOS 与ANDROID框架及应用开发模式对照,android和ios开发框架
相关文章

 发表评论

评论列表

2024-09-23 20:12:35

这篇文章介绍了IOS移动端应用开发架构总结,非常有启发,感谢小编分享。

2024-09-26 09:43:31

对于移动APP开发来说,架构确实是非常重要的一部分,一个好的架构能够提高开发效率,减少后期维护的成本。

2024-09-27 09:49:41

文中提到的MVC模式和MVP/MVVM模式都是非常经典的前端架构,不同架构适用于不同的项目需求,需要根据实际情况来选择。