Swift中实现Observable机制
2016-07-15 14:32
316 查看
猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!
原文地址: http://blog.csdn.net/cocos2der/article/details/51917539
今天给别人讲个Observable的实现和使用场景,结合Observable-Swift github: https://github.com/slazyk/Observable-Swift 讲了半天貌似还没有特别明白,故写了个简易的实现,讲述了下Observable属性监控机制。
这样貌似容易理解了,O(∩_∩)O哈哈~
原文地址: http://blog.csdn.net/cocos2der/article/details/51917539
今天给别人讲个Observable的实现和使用场景,结合Observable-Swift github: https://github.com/slazyk/Observable-Swift 讲了半天貌似还没有特别明白,故写了个简易的实现,讲述了下Observable属性监控机制。
//: Playground - noun: a place where people can play import UIKit import Foundation // MARK: - Observable class Observable<T> { // 定义block结构 typealias Observer = T -> Void // 申明一个block,用于数据改变的执行 private var observer: Observer? // 数据发生变更,则通过observer告知 var value: T { didSet { observer?(value) } } init(_ v: T) { value = v } func observe(observer: Observer?) { self.observer = observer observer?(value) } } // MARK: - People struct PeopleModel { let firstName: Observable<String> let lastName: Observable<String> init(firstName: String, lastName: String) { self.firstName = Observable(firstName) self.lastName = Observable(lastName) } } // MARK: - Test // test1 let people = PeopleModel(firstName: "sunny", lastName: "liu") people.firstName.observe { newValue in print("firstName changed: \(newValue)") } people.lastName.observe { print("lastName changed: \($0)") } people.firstName.value = "sunny2" people.lastName.value = "liu2" // test2 class House { let lableHouseName = UILabel() init() { } var people: PeopleModel? { didSet { people?.firstName.observe{ [unowned self] in self.lableHouseName.text = $0 } } } }
这样貌似容易理解了,O(∩_∩)O哈哈~
相关文章推荐
- 查看github pages文档的方式
- 使用BAE的基于Web.py的简单博客程序
- Apple Swift学习教程
- 6 个托管 git 仓库的地方
- 介绍 Fedora 上的 Swift
- 两分钟学会如何在github托管代码
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift自定义iOS中的TabBarController并为其添加动画
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- Swift实现Selection Sort选择排序算法的实例讲解
- Android自定义View实现仿GitHub的提交活跃表格
- 简单分析Swift语言的一些基本特征
- 使用 Swift 语言编写 Android 应用入门
- 理解二叉堆数据结构及Swift的堆排序算法实现示例
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- Java观察者设计模式(Observable和Observer)