最近项目比较不赶的状况下,决定把一些通用、经常使用的内容集成在一个项目框架中,意在新项目中能够快速搭建;其实通过几个项目后,老是有一些重复的建立工做,可使用本项目的内容直接进行开发;采用的是MVC的分层模式,本文将会重点介绍关于层级的划分及一些已经集成的第三方功能介绍;固然本项目的源代码已经上传到gitHub(地址:https://github.com/wujunyang/MobileProject)上面,固然要是对你有帮助记得给个星,假如你们有时间也能够一块儿完善,或者有什么问题也能够及时留言;ios
本项目是在XCode7上面建立,若您的XCode版本是在7如下,能够把代码中几处7的特性进行删除,就能够正常运行本程序;本项目运用Pods进行部分第三方插件管理,对于Pods的知识不是本文的重点,若不了解能够在网络上进行搜索;项目中采用两个Targets来区分产品环境跟测试环境,而后在网络交互时设置不一样的链接地址,假若有多个不一样地区的版本也是经过不一样的Targets进行配置,经过Targets的标识区分出一些差别化,项目的层级划分是按如今比较经常使用的,若您有更好的意见欢迎提出来,会及时更新到项目中;项目的框架也会不断更新跟集成新的内容进去;git
A 总体框架github
工程MobileProject为主项目,Pods是自动管理部分第三方插件的工程;在MobileProject工程中对项目进行划分红Main、Expand、Resource、Vender、SDKFile、Supporting Files六个部分;数据库
一 :Main(主要):主要存放关于MVC的内容文件,子级为每一个大功能模块的内容;目前MobileProject已经默认建立几个,包含Logger(日志)、Preview(预演)、Home(首页)、Public(公共)、Base(基类)、Login(登陆);微信
1.1.1 Preview用于存放一些练习的功能页面,本项目集成一些第三插件实例或者实例代码都会放在里面;网络
1.1.2 Public主要是为了考虑一些可能每一个功能模块都会包含的内容,就能够放在此处;在每一个大的功能模块中都包括如下几部,分别为Model、View、Controller、Other;此处又把View级进行拆分出SubView及Cell;SubView意在存放一些子视图,而Cell则是为了存放一些表格行;这部分能够根据每一个不一样的项目建立出不一样的子级;框架
1.1.3 Base用于存放一些抽离提取或以共用的可被继承的内容;工具
二: Expand(扩展):主要存放一些经常使用的帮助类及扩展类,此级又分为Const(常量)、Macros(宏)、Tool(工具类)、Network(网络)、Category(分类)、DataBase(数据库)六个部分;测试
1.2.1 其中Macros里面又分出两个文件Macros.h、ThirdMacros.h,第一个是存放一些项用经常使用的宏,例如如屏幕大小、字体等;而第二个意在存放一些第三方的SDK要使用的Key值,例如友盟、百度地图等;字体
1.2.2 Tool目前存放着一些提取的帮助管理类,例如UmengHelper(友盟管理)、LcationManager(定位管理)、Logger(日志记录)、Reachability(网络状态)等,
1.2.3 Network目前是运用猿题库封装AFNetworking使用的YTKNetwork源代码,本项目对它进行一些微调,让它适用于项目中多个Targets对应不一样的请求地址,若要修改API地址在NetWorkBaseUrlConfig类里面,网络请求地址目前又分为逻辑访问前缀地址、图片加载的地址、升级APP的请求地址、登陆的请求地址;而后在MVC层里面的API请求时再根据SERVERCENTER_TYPE来区分加载是哪种前缀地址;项目中登陆模块已经有一个实例代码;
1.2.4 Category为Git上面iOS-Categories分类的内容,多建立一个Other用于存放平时要扩展的分类;经常使用的扩展类其实大多已经包含在里面;
1.2.5 DataBase意在存储一些项目要用到的初始化数据,固然包含各类类型的文件均可以存放在这;
三:Resource(资源)主要存分三个部分的内容,包含Global(全局)、Image(图片资源)、Plist(配置)三部分;此部分的内容也比较单一,Global用于存放项目一些全局的内容,包含启动项的内容LaunchScreen.storyboard、头部引用PrefixHeader.pch、语言包File.strings; Image用于存放图片资源,能够根据功能模块进行再分不一样的xcassets文件;Plist用于存放plist文件,主要是本项目中会建立多个的Tag,而每一个Tag都会有自个的plist文件进行管理,因此统一存放方便管理;
四:Vender(第三方)存放一些可能被修改的第三方插件及一些自个封装插件;本实例中引用的几个比较经常使用的第三方插件,简单介绍其中的几个,GVUserDefaults是对UserDefaults的封装,简单就能够用于存取操做;JDStatusBarNotification是在状态栏提示效果的插件;ActionSheetPicker底部弹出如时间选择、选项的插件;QBImagePickerController是照片选择插件,支持多选并能够设置最多选择张数;其它几个插件能够经过名字在网络上进行搜索,很容易就能够有相应的实例及使用方法;
五:SDKFile(集成)意在存放一些第三方SDK的文件,固然如今不少比较有名的SDK都有Pods进行管理;这样也省去了咱们自个去维护更新的麻烦;假如没有Pods的方式,就把SDK放在此处;
六:Podfile主是一些比较稳定的第三方插件及SDK的引用;关于Pod使用的好处就不在这介绍,若是项目中尚未使用就赶忙了;
platform :ios, '7.0' pod 'AFNetworking', '~>2.6.0' pod 'SDWebImage', '~>3.7' pod 'JSONModel', '~> 1.0.1' pod 'Masonry','~>0.6.1' pod 'FMDB/common' , '~>2.5' pod 'FMDB/SQLCipher', '~>2.5' pod 'CocoaLumberjack', '~> 2.0.0-rc' pod 'BaiduMapKit' #百度地图SDK pod 'UMengAnalytics-NO-IDFA'#友盟统计无IDFA版SDK pod 'GTSDK' #个推SDK pod 'UMengSocial', '~> 4.3' #友盟社会化分享及第三方登陆
B 集成内容
MobileProject目前已经集成百度地图的定位、友盟统计、CocoaLumberjack日志记录、个推的消息推送、友盟分享、友盟第三方登陆内容;从此还会集成一些比较经常使用的内容;上面几部分只要替换相应key就可使用;个推还要使用到大家的证书;相应的实例代码都在项目中,也是通过验证测试过了;初始化代码都在AppDelegate里面;(QQ,微信,新浪)三种的第三方登陆功能,(QQ空间分享,微信朋友圈,新浪微博分享,QQ微博分享,微信好友)五种的分享功能,相应的代码都放在项目Preview中;也增长关于CocoaLumberjack日志记录的展现及查看页面;