【iOS】浅谈App开发iOS端的架构设计

简介: 本文将要讲的架构设计可能没有那么真正的架构那么准确,可以理解为在创建App时项目的一个目录结构吧。做iOS开发3年,其实深刻的架构设计感觉还谈不上,主要是现在接手了一套架构比较牛的代码,然后回头看了一下自己之前的App架构,觉得豁然开朗了很多。

本文将要讲的架构设计可能没有那么真正的架构那么准确,可以理解为在创建App时项目的一个目录结构吧。
做iOS开发3年,其实深刻的架构设计感觉还谈不上,主要是现在接手了一套架构比较牛的代码,然后回头看了一下自己之前的App架构,觉得豁然开朗了很多。在这里主要总结分享一下我自己写过的比较渣的架构,希望大家以此为鉴!
第一份工作的第一个App,那个时候知道的架构也只有MVC模式,但是可能理解的也不是很透彻,写出来的项目结构如下图:
img_5f6aa0becb0d257ad0b7dac834d6eb30.png

那个时候刚开始写项目的时候觉得还可以,毕竟代码不是很多的时候还是很清晰的,就是ViewController里面有时候代码会很多。后来就把功能比较复杂的ViewController里面的视图抽出来写一个类,在对应的model中将数据处理好再给到ViewController。这样可以稍微减少一下ViewController中的代码,让代码可读性和可维护性提高。
随着项目功能的增多,这个架构的弊端也暴露的越来越多,找一个功能对应的代码也不好找。为了代码的可读性和后期维护,我又重新改了项目的结构,项目架构还是基于MVC,结构如下图:
img_8f0bd5e0a4922311198769e9e596b75d.png

修改后的结构,在刚刚改的时候,我觉得还是很好的。特别是与之前相比,感觉清晰了很多。当然这两种在一些人眼里都是很烂的,觉得好的可以参考参考用用看,觉得烂的欢迎留言交流好的架构,让我学习学习。第二种我觉得还是可取的,看上去也比较小清新,维护起来也不是很困难。但是看了现在的项目架构之后,我觉得第二种还需要优化的地方就是公用类,不宜写的太多。调用的时候确实是方便,但是这会让很多代码都有耦合,不符合代码应有的低耦合性。
现在的项目结构是基于MVP的,各模块都是以组件化的形式来开发的。页面的跳转用的是路由表的方法,每个ViewController会关联一个interactor,在interactor中处理数据和交互,每个interactor会关联一个adapter,在adapter中实现网络接口方法的调用。现在这个项目架构的优点在于解耦处理的很到位,跨模块的调用几乎没有,实在要跨模块操作的话基本都用了通知。不过个人觉得这样的架构比较适合大型项目,如果项目不是很大,用这个架构的话,会觉得很繁琐,特别是ViewController与interactor和adapter的关联,在看代码的时候要在各类间跳转,代码可读性不是很高。
我说它是基于MVP的原因是因为,大量的提供方法调用的类,比如网络请求的接口封装类,都是以协议的方式来开放接口的。这样可以更好的组件化,特别是需要将某一模块的功能独立出来封装成SDK时,可以以协议的方式开放外部调用的接口。
如果是新手的话建议用图二的架构,上手比较容易,可以把公用的工具类按照功能需要分别已类别或者子类的形式分散到各模块中,这样可以降低代码中的耦合性。至于第三种,感觉用起来还是挺复杂的,但是很符合代码的高内聚、低耦合,然后组件化处理的很到位,可以用在大型项目或者是要做成SDK的模块。

目录
打赏
0
0
0
0
1
分享
相关文章
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
67 13
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
48 8
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
74 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
72 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
体育赛事即时比分 分析页面的开发技术架构与实现细节
本文基于“体育即时比分系统”开发经验总结,分享技术实现细节。系统通过后端(ThinkPHP)、前端(Vue.js)、移动端(Android/iOS)协同工作,解决实时比分更新、赔率同步及赛事分析展示等问题。前端采用 Vue.js 结合 WebSocket 实现数据推送,提升用户体验;后端提供 API 支持比赛数据调用;移动端分别使用 Java 和 Objective-C 实现跨平台功能。代码示例涵盖比赛分析页面、API 接口及移动端数据加载逻辑,为同类项目开发提供参考。
布谷直播系统源码开发实战:从架构设计到性能优化
作为山东布谷科技的一名技术研发人员,我参与了多个直播系统平台从0到1的开发和搭建,也见证了直播行业从萌芽到爆发的全过程。今天,我想从研发角度,分享一些直播系统软件开发的经验和心得,希望能对大家有所帮助。
Java高级应用开发:基于AI的微服务架构优化与性能调优
在现代企业级应用开发中,微服务架构虽带来灵活性和可扩展性,但也增加了系统复杂性和性能瓶颈。本文探讨如何利用AI技术,特别是像DeepSeek这样的智能工具,优化Java微服务架构。AI通过智能分析系统运行数据,自动识别并解决性能瓶颈,优化服务拆分、通信方式及资源管理,实现高效性能调优,助力开发者设计更合理的微服务架构,迎接未来智能化开发的新时代。
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
iOS App 上架流程图文教学
在上架App 之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App 送审的话,则要依序做完下列几件事情即可。

热门文章

最新文章