初探swift语言的学习笔记八(保留了许多OC的实现)
尽管swift作为一门新语言,但还保留了许多OC的机制,使得swift和OC更好的融合在一起。如果没有OC基础的先GOOGLE一下。
如:KVO,DELEGATE,NOTIFICATION。
详见DEMO。
- import Foundation
- @objc // 需要打开objc标识,否则@optional编译出错
- protocol kvoDemoDelegate {
- func willDoSomething()
- @optional func didDoSomething() //可选实现,
- }
- let ntfname = "test_notification"
- class kvoDemo : NSObject //不写NSObject默认就是从NSObject来的
- {
- var delegate: kvoDemoDelegate!
- var presult : Double = 0.0
- var result : Double {
- get{
- return presult;
- }
- set{
- self.presult = newValue
- }
- }
- init()
- {
- }
- func doSomething()
- {
- if let yet = self.delegate?
- {
- delegate!.willDoSomething()
- }
- for _ in 1..5
- {
- println("i'm doing now,don't touch me,please.")
- }
- if let yet = self.delegate?
- {
- delegate!.didDoSomething!()
- }
- }
- func notificationPost()
- {
- let ntf = NSNotificationCenter.defaultCenter()
- ntf.postNotificationName(ntfname, object :nil, userInfo:nil)
- }
- deinit
- {
- }
- }
测试:
- class ViewController: UIViewController,kvoDemoDelegate {
- //KVO
- override func observeValueForKeyPath(keyPath: String?, ofObject: AnyObject?, change: NSDictionary?, context: CMutableVoidPointer)
- {
- if keyPath == "result"
- {
- var newvalue : AnyObject? = change?.objectForKey("new");
- println("the new value is \(newvalue)")
- }
- }
- //delegate
- func willDoSomething()
- {
- println("i will do it.")
- }
- func didDoSomething()
- {
- println("i had do it.")
- }
- //notification
- func onRecviceNotification(notification:NSNotification)
- {
- println("Recevice notification \(notification)")
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- var kvo = kvoDemo()
- kvo.addObserver(self, forKeyPath: "result", options: NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old, context: nil)
- kvo.result = 280.0
- kvo.removeObserver(self,forKeyPath:"result",context: nil)
- kvo.delegate = self
- kvo.doSomething()
- let ntf = NSNotificationCenter.defaultCenter()
- ntf.addObserver(self, selector:"onRecviceNotification:", name :ntfname, object : nil)
- kvo.notificationPost()
- ntf.removeObserver(self)
- }
- }
结果:
- the new value is 280
- i will do it.
- i'm doing now,don't touch me,please.
- i'm doing now,don't touch me,please.
- i'm doing now,don't touch me,please.
- i'm doing now,don't touch me,please.
- i had do it.
- Recevice notification NSConcreteNotification 0x10be60930 {name = test_notification}
初探swift语言的学习笔记八(保留了许多OC的实现)相关推荐
- 初探swift语言的学习笔记九(OC与Swift混编)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记一(基本数据类型)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28258805 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记四(类对象,函数)
2019独角兽企业重金招聘Python工程师标准>>> swift扩展了很多功能和属性,有些也比较奇P.只有慢慢学习,通过经验慢慢总结了. 下面将初步学习一下类的写法. 码工,最大爱 ...
- 初探swift语言的学习笔记十(block)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记七(swift 的关健词)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/32133809 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记五(线程)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/30354127 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记十一(performSelector)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/31824179 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记三(闭包-匿名函数)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
最新文章
- python【力扣LeetCode算法题库】2-两数相加
- 参数构造错误 微信_快速掌握前端开发中的常见错误
- android listview 禁止滚动
- php zhegnze_php 正则表达式
- linux和windows双系统互拷文件乱码问题
- Linux 守护进程的启动方法
- 30岁以上的女人应选择什么品牌的眼霜?
- Hadoop之MapReduce理论篇01
- windows bat定时重启软件
- python爬虫学习(4) —— 手刃「URP教务系统」
- northwind数据库mysql下载_SQLEXPRESS 2012 安装NorthWind和Pub数据库
- 哪吒票房超复联4,100行python代码抓取豆瓣短评,看看网友怎么说
- 美国交通安全管理局出台更加严格机场安全检查新规
- 神奇的三门问题,到底换不换门
- 阿里云同一账号下ECS服务器的克隆操作方法,你get到了吗
- 趣头条老是旧闻重复,怎么处理 | 伪原创视频需要改什么
- C#—飞行棋超全总结(全注释版)
- 【这很AI】谷歌再推AI应用“名画匹配”:与博物馆7万幅历史名画匹配,结果可能是梵高
- 彻底解决Qt中文乱码
- 百度CTO王海峰:亚洲丰富实践场景推动AI技术落地探索
热门文章
- Python+Flask+Echart+WordCloud:豆瓣爬虫项目的可视化数据
- 九十一、前端可视化ECharts的使用
- 化工热力学:第三章 纯流体的热力学性质
- 阿里巴巴淘系开源大型3D家具数据集(3D-FUTURE)推动3D家居智能研究
- 从工作的角度,NLP/CV/推荐系统选哪个?
- 基线系统需要受到更多关注:基于词向量的简单模型 | ACL 2018论文解读
- 每周论文清单:高质量文本生成,多模态情感分析,还有一大波GAN | PaperDaily #26
- centos7下使用yum安装pip
- nn.AdaptiveAvgPool1d()
- LeetCode 10 正则表达式匹配