iOS架构设计与优化(一)

前言 随着移动开发的浪潮逐渐退去,现在对于移动开发工程师的要求越来越高,不在仅仅满足于能完成项目所需的功能于界面的搭建,对于底层和架构的理解对于现在的开发越来越重要,在此有一点架构的设计经验可以与大家分享和探讨 传统移动MVC设计模式 在长久以来的开发过程中,我们有使用着用途最广,使用者众多的MVC设计模式。但是,随着开发的进行,MVC产生的问题越来越多,控制器层的代码无法控制,代码越来越难以维护和迭代。每当产品来提出新的需求,程序猴子们的大刀早已饥渴难耐了,但是又不得不陷入继续打补丁版本更新无尽的循环中··· 是MVC已经被时代淘汰了吗? 可能我们没有使用正确的姿势 深入理解MVC中的M Model不只是一个数据模型,更是一个处理数据产生、获取、逻辑处理中心,不能只单单理解为一个数据模型,我们在开发中使用的Model只是这个数据中心中很小很小的一个部分。而在这个数据中心中,我们又应该将这个中心分层,比如可以分为Service层用来处理业务逻辑、DAO层处理数据库逻辑、Protocol层来封装一些某些功能接口等等。在此,我使用JAVAWeb中的一个图来描述…

New Year

* 又从家来了深圳; * 一年一年; * 记忆如刀刻般清晰; * 新年,希望有大的突破。…

iOS模块化开发研究

看了 Limboy 和 Casa 对 iOS 组件化方案的讨论,写篇文章梳理下思路。 首先我觉得”组件”在这里不太合适,因为按我理解组件是指比较小的功能块,这些组件不需要多少组件间通信,没什么依赖,也就不需要做什么其他处理,面向对象就能搞定。而这里提到的是较大粒度的业务功能,我们习惯称为”模块”。为了方便表述,下面模块和组件代表同一个意思,都是指较大粒度的业务模块。 一个 APP 有多个模块,模块之间会通信,互相调用,例如微信读书有 书籍详情 想法列表 阅读器 发现卡片 等等模块,这些模块会互相调用,例如 书籍详情要调起阅读器和想法列表,阅读器要调起想法列表和书籍详情,等等,一般我们是怎样调用呢,以阅读器为例,会这样写: #import "WRBookDetailViewController.h" #import "WRReviewViewController.h&…

JS与OC互调

最近在看React-native相关东西,发现rn中使用的javascriptcore这个框架来完成oc和js交互,故先了解一些相关东西,为后续研究准备 * JavaScriptCore作用:JavaScriptCore是苹果原生API,用来JS和OC交互的,库中有三个重要的类如下 * JSContext: JS运行环境,用它去执行JS代码,并且通过它去获取JS里的数据 * JSValue: 用于接收JS中获取的数据类型,可以是任一对象,方法 JS调用原生OC篇 方式一 * 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理。 * 我写了一个简单的HTML网页和一个btn点击事件用来与原生OC交互,HTML代码如下: <html> <header> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"…

ijkplayer

导入准备(省去茫茫多的打包集成步骤): * 参考资料:http://www.jianshu.com/p/1f06b27b3ac0 1.ijkplayer用法简介 * 只需要有推流url地址即可 * 注:最好真机测试,模拟器卡、不流畅 2.抓取数据 * 抓取了映客直播数据,没加密 * 映客主播接口url:http://116.211.167.106/api/live/aggregation?uid=133825214&interest=1 - (void)loadData { // 映客数据url NSString *urlStr = @"http://116.211.167.106/api/live/aggregation?uid=…

ReactiveCocoa-2

1.ReactiveCocoa常见操作方法介绍。 * 1.1 ReactiveCocoa操作须知 * 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,而RACSignal继承RACStream。 * 1.2 ReactiveCocoa操作思想 * 运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方法)执行结果的技术. * Hook用处:截获API调用的技术。 * Hook原理:在每次调用一个API返回结果之前,先执行你自己的方法,改变结果的输出。 * RAC开发方式:RAC中核心开发方式,也是绑定,之前的开发方式是赋值,而用RAC开发,应该把重心放在绑定,也就是可以在创建一个对象的时候,就绑定好以后想要做的事情,而不是等赋值之后在去做事情。 * 列如:把数据展示到控件上,之前都是重写控件的setModel方法,用RAC就可以在一开始创建控件的时候,就绑定好数据。…

Cocoapods error

* error: Unable to find a specification for xxxxxx * solution: Execute sudo rm -fr ~/.cocoapods/repos/master because it'll remove all the bogus and corrupted repos that you have in your computer to give it a chance to repopulate after you redo pod setup, which'll reinstate you…