
iOS
文章平均质量分 93
架构窝
技术立本,坦荡做人....
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[译]RxSwift + MVVM: 怎样搞定 ViewModels
简介我们开始使用RxSwift和Model-View-ViewModel(MVVM)架构开发BlaBlaCar将近一年了。我们对于结果非常激动。我们用这个方式写的代码非常容易看懂,维护,测试以及衡量。然而,开始的几周却不是一件轻松的事情:我们不得不重复搞MVVM+RxSwift架构的某些方面让事情弄对。其中一件事就是就是给ViewModel提供输入的方式。让我们看看两种为ViewModel提供输入(RxEvents)的不同的方法。首先让我们过一遍ViewModel。ViewModelViewMod翻译 2020-12-04 16:04:05 · 1871 阅读 · 0 评论 -
RxSwift系列—销毁者Dispose
七、销毁者Dispose一般来说,一个可观察序列发出了 error 或者 completed 事件,那么所有内部资源都会被释放。但是如果你需要提前释放这些资源或者取消订阅的话,那么你可以对返回的 Disposable(可被清除的资源) 调用 dispose 方法。 调用 dispose 方法后,订阅将被取消,并且内部资源都会被释放掉。7.1 案例引入// 创建序列let ob = Observable<Any>.create { (observer) -> Disposable i原创 2020-12-04 15:50:53 · 1755 阅读 · 0 评论 -
RxSwift序列—Subject
六、Subject来看一个非常特殊的类型-Subject,为什么说它特殊呢?原因很简单:**Subject既可以做序列,也可以做观察者!**正是因为这一特性,所以在实际开发中被大量运用。下面我们一起来解读一下这个特殊的Subject。6.1 基本原理首先我们来看看:SubjectType的原理!public protocol SubjectType : ObservableType { // 关联了观察者类型,具备这个类型的能力 associatedtype SubjectObs原创 2020-12-04 15:41:16 · 1789 阅读 · 0 评论 -
RxSwift系列—Driver
五、Driver5.1 案例引入请求一次网络,绑定到UI上5.1.1 采用Observerablelet result0 = inputTF.rx.text.skip(1) .flatMap { [weak self](input) -> Observable<Any> in return (self?.dealwithData(inputText:input ?? ""))! .observeOn(MainSchedule原创 2020-12-04 15:32:56 · 2597 阅读 · 0 评论 -
RxSwift系列—RxSwift调度者
四、RxSwift调度者4.1 案例引入Schedulers 是RxSwift实现多线程的核心模块。它主要用于控制任务在哪个线程或队列运行。咱们在平时的开发过程中,肯定都使用过网络请求,网络请求是在后台执行的,获取到数据之后,再在主线程更新UI。先来一段代码引入/// 子线程DispatchQueue.global().async { print("请求数据") let _ = self.actionBtn.rx.tap .subscribe(onNext: { () in原创 2020-12-02 21:00:27 · 1770 阅读 · 0 评论 -
RxSwift系列—RxSwift高阶函数
3.1 组合操作符3.1.1 startWith在开始从可观察源发出元素之前,发出指定的元素序列print("*****startWith*****")Observable.of("1", "2", "3", "4") .startWith("A") .startWith("B") .startWith("C", "a", "b") .subscribe(onNext: { print($0) }) .disposed(by: disposeBag)//原创 2020-12-01 19:34:44 · 1653 阅读 · 0 评论 -
RxSwift系列—RxSwift核心逻辑
二、RxSwift核心逻辑2.1 RxSwift使用三步曲第一步:创建序列let ob = Observable<String>.create { (observer) -> Disposable in return Disposables.create()}第二步:订阅信号let _ = ob.subscribe(onNext: { (text) in print("订阅信息: \(text)")}, onError: { (error) in p原创 2020-12-01 19:22:14 · 1709 阅读 · 0 评论 -
RxSwift系列—基本概念
一、基本概念1.1、函数响应式编程1.1.1 函数式函数式编程简称FP(Functional Programming),函数式编程就是一种抽象程度很高的编程范式,它将计算机运算看做是数学中函数的计算,而纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是:允许把函数本身作为参数传入另一原创 2020-12-01 19:09:29 · 1470 阅读 · 0 评论 -
App组件化架构设计实践V1.0
1、基本概念与共识业务组件化(或者叫模块化)作为移动端应用架构的主流方式之一,近年来一直是业界积极探索和实践的方向。在组件化过程中我们深刻体会到“没有绝对正确的架构,只有最合适的架构”这句话的意义。很多通用方案只是组件化的冰山一角,实际落地过程中还有相当多的东西需要考量。本文讨论的『库』是『功能库』(比如:图片库,网络库),统称为『库』,与具体的产品业务无关;区别于功能库,本文讨论的模块是『业务模块/组件』(比如订单模块,商品模块)。业务模块的名称,相比组件(Component),我们觉得称之为模块原创 2020-11-28 16:48:39 · 2595 阅读 · 1 评论 -
iOS8: Ignore manifest download, already have bundleID新发现『问题bundleID缓存在iOS系统"文件系统"下的数据库中』
1、网上现有的方案(方案一,可以搜索到详细的文章)最近客户老是让针对『iOS8: Ignore manifest download, already have bundleID』给出解决方案,很多资料都说是iOS 8.0的一个bug,当前解决方案是如大多数文章所建议的那样....方案如下:The biggestissue for us is that we can not repr原创 2015-02-06 00:52:58 · 2630 阅读 · 2 评论 -
App客户端架构演化之路
2015年入职新东方参与留留学iOS端的研发,至今,参与了好几个项目(留留学、掌上新东方、SL、乐听说等),最近负责乐听说iOS App端。不同项目的经历,让我接触到了不同的项目架构和代码风格,也让我对App的项目架构有所思考与心得。1、App早期架构1.02015年6月留留学App iOS端1.0.0版本诞生,当时采用的架构很简单,就是在传统的MVC架构基础上,封装了一个网络服务层构...原创 2018-01-29 15:51:14 · 25250 阅读 · 10 评论 -
iOS开发技术的核心摘要
iOS开发技术的核心摘要原创 2015-02-05 00:39:42 · 4648 阅读 · 0 评论