快速搭建一个成熟,强壮的App框架【转载】
App框架搭建
本文是投稿文章,作者:衡成飞(博客)
一个App,何为优秀?
产品本身是一个维度,另外一个维度,我想应该是技术层面。
App的框架,如大楼之根基,好的框架对于开发,拓展和维护可以起到事半功倍的效果,其重要性不言而喻。
今天分享一下自己在搭建框架时的经验,希望大家多提意见,一起进步成长。
以下是常见的APP框架结构,此Project中包括自定义的UITabbar、Json反序列化、网络请求异步加载、自适应cell高度以及圆角图片等等。
下图是已经搭建好的项目结构
App结构如下
常见的APP框架大多只有一个Project,包括了所有的业务功能实现。
其缺点是,对于一个稍微大型的APP,结构显得较为复杂,不利于后期的开发和维护。
以下划分,是我个人的一些理解,不足之处还请指教。
※ APP
大的层级划分
Classes---所有开发文件放在此
|-----Common----本app中常见的定义和操作
|-----Logic----所有业务功能相关文件
Third---所有第三方依赖(不支持cocoapod的)
另外依赖下面的IOSModel,IOSCommon,IOSView三个framework。
※ Model(Dynamic Framework)
所有的Http接口模型对象。
此framework作为Client和Server的桥梁,只需关注接口的数据格式。
另外包括Json反序列化为Model的过程,以后若要替换第三方,只需修改此framework即可。
※ Common(Dynamic Framework)
通用的操作,如网络请求,Extension等。
此framework,包含了和业务无关的通用的操作,并对第三方做了再次封装。
若开发其他app,只需引用此framework即可。
※ View(Dynamic Framework)
自定义的View,如圆角图片等(Storyboard可直接设置,不需要编写代码)
CocoaPods依赖的常见第三方库
关于iOS9适配问题,此工程中也已经全部解决。
1:BitCode问题
2:非Https请求
3:第三方登录问题
以上Project下载路径:http://git.oschina.net/hengchengfei/IOSTemplate
原文传送门:http://www.cocoachina.com/ios/20151126/14455.html
快速搭建一个成熟,强壮的App框架【转载】的更多相关文章
- 快速搭建一个“微视”类短视频 App
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 " ...
- 一个小时搭建一个全栈 Web 应用框架
把想法变为现实的能力是空想家与实干家的区别.不管你是在一家跨国公司工作,还是正在为自己的创业公司而努力,那些有能力将创意转化为真正产品的人,都具有宝贵的技能并拥有明显的实力.如果你能在不到一个小时的时 ...
- 如何快速搭建一个 Node.JS 项目并进入开发?
了解:如何快速搭建一个项目并进入开发? 在此不概述 Node.JS 的历史以及发展过程. 因为之前接触过通过 Java 开发语言,所以明确地知道一个服务器所需的文件,以及一个服务器所需要的操作. 那么 ...
- 快速搭建一个直播Demo
缘由 最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 .腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站.下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例 ...
- 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】
Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...
- Dubbo入门介绍---搭建一个最简单的Demo框架
Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...
- 【Head First Servlets and JSP】笔记6:什么是响应首部 & 快速搭建一个简单的测试环境
搭建简单的测试环境 什么是响应首部 最简单的响应首部——Content-Type 设置响应首部 请求重定向与响应首部 在浏览器中查看Response Headers 1.先快速搭建一个简单的测试环境, ...
- jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...
- NodeJS 最快速搭建一个HttpServer
最快速搭建一个HttpServer 在目录里放一个index.html cd D:\Web\InternalWeb start http-server -i -p 8081
随机推荐
- jcl sort comp3 to 表示型
Lets say your packed data is at 10th column and is of length 6, S9(4)V99 You could try the following ...
- ASP.NET基础题(1-10)
1.简述 private. protected. public. internal 修饰符的访问权限. private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内 ...
- [BZOJ 1800] 飞行棋
Link: BZOJ 1800 传送门 Solution: $O(n^4)$…… Code: #include <bits/stdc++.h> using namespace std; ] ...
- jqgrid postData setGridParam 调用多次时查询条件累加的问题--详情页查询导致的无法在新的页面中查询
$("#btn_search").click(function () { url = "/AMEvents/GetGridJson?evtype=1"; var ...
- Proxy server got bad address from remote server
在ArcMap中,在GIS Servrvers中,打开已经设置好的服务器时,出现下面的弹窗问题. Proxy server got bad address from remote server(ver ...
- android 代码覆盖率
背景 项目使用的是small插件.一个app分为main和多个插件,为了统计插件的代码覆盖率. 1 修改插件 修改插件build.gradle buildTypes { release { ... } ...
- leetcode 题解:Merge Sorted Array(两个已排序数组归并)
题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume ...
- 修改PHP上传文件的大小限制(post)
在PHP的默认配置情况下,当上传的文件大小超出一定的限制时,我们将得到如下的错误提示信息: Warning: POST Content-Length of 625523488 bytes exceed ...
- [Angular] ngPlural
The usecase is very simple: <div [ngPlural]="items.length"> <ng-template ngPlural ...
- AutoWare 使用
1.安装readme当中的要求,安装依赖库 52 sudo apt-get install ros-indigo-desktop-full ros-indigo-nmea-msgs ros-i ...