作者:fengsh998
原文地址:http://blog.csdn.net/fengsh998/article/details/32715833
转载请注明出处
如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢!

尽管swift作为一门新语言,但还保留了许多OC的机制,使得swift和OC更好的融合在一起。如果没有OC基础的先GOOGLE一下。

如:KVO,DELEGATE,NOTIFICATION。

详见DEMO。

[cpp] view plaincopy
  1. import Foundation
  2. @objc   // 需要打开objc标识,否则@optional编译出错
  3. protocol kvoDemoDelegate {
  4. func willDoSomething()
  5. @optional  func didDoSomething()  //可选实现,
  6. }
  7. let ntfname = "test_notification"
  8. class kvoDemo : NSObject //不写NSObject默认就是从NSObject来的
  9. {
  10. var delegate: kvoDemoDelegate!
  11. var presult : Double = 0.0
  12. var result : Double {
  13. get{
  14. return presult;
  15. }
  16. set{
  17. self.presult = newValue
  18. }
  19. }
  20. init()
  21. {
  22. }
  23. func doSomething()
  24. {
  25. if let yet = self.delegate?
  26. {
  27. delegate!.willDoSomething()
  28. }
  29. for _ in 1..5
  30. {
  31. println("i'm doing now,don't touch me,please.")
  32. }
  33. if let yet = self.delegate?
  34. {
  35. delegate!.didDoSomething!()
  36. }
  37. }
  38. func notificationPost()
  39. {
  40. let ntf = NSNotificationCenter.defaultCenter()
  41. ntf.postNotificationName(ntfname, object :nil, userInfo:nil)
  42. }
  43. deinit
  44. {
  45. }
  46. }

测试:

[cpp] view plaincopy
  1. class ViewController: UIViewController,kvoDemoDelegate {
  2. //KVO
  3. override func observeValueForKeyPath(keyPath: String?, ofObject: AnyObject?, change: NSDictionary?, context: CMutableVoidPointer)
  4. {
  5. if keyPath == "result"
  6. {
  7. var newvalue : AnyObject? = change?.objectForKey("new");
  8. println("the new value is \(newvalue)")
  9. }
  10. }
  11. //delegate
  12. func willDoSomething()
  13. {
  14. println("i will do it.")
  15. }
  16. func didDoSomething()
  17. {
  18. println("i had do it.")
  19. }
  20. //notification
  21. func onRecviceNotification(notification:NSNotification)
  22. {
  23. println("Recevice notification \(notification)")
  24. }
  25. override func viewDidLoad() {
  26. super.viewDidLoad()
  27. // Do any additional setup after loading the view, typically from a nib.
  28. var kvo = kvoDemo()
  29. kvo.addObserver(self, forKeyPath: "result", options: NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old, context: nil)
  30. kvo.result = 280.0
  31. kvo.removeObserver(self,forKeyPath:"result",context: nil)
  32. kvo.delegate = self
  33. kvo.doSomething()
  34. let ntf = NSNotificationCenter.defaultCenter()
  35. ntf.addObserver(self, selector:"onRecviceNotification:", name :ntfname, object : nil)
  36. kvo.notificationPost()
  37. ntf.removeObserver(self)
  38. }
  39. }

结果:

[cpp] view plaincopy
  1. the new value is 280
  2. i will do it.
  3. i'm doing now,don't touch me,please.
  4. i'm doing now,don't touch me,please.
  5. i'm doing now,don't touch me,please.
  6. i'm doing now,don't touch me,please.
  7. i had do it.
  8. Recevice notification NSConcreteNotification 0x10be60930 {name = test_notification}

初探swift语言的学习笔记八(保留了许多OC的实现)相关推荐

  1. 初探swift语言的学习笔记九(OC与Swift混编)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  2. 初探swift语言的学习笔记一(基本数据类型)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28258805 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  3. 初探swift语言的学习笔记四(类对象,函数)

    2019独角兽企业重金招聘Python工程师标准>>> swift扩展了很多功能和属性,有些也比较奇P.只有慢慢学习,通过经验慢慢总结了. 下面将初步学习一下类的写法. 码工,最大爱 ...

  4. 初探swift语言的学习笔记十(block)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  5. 初探swift语言的学习笔记七(swift 的关健词)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/32133809 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  6. 初探swift语言的学习笔记五(线程)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/30354127 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...

  7. 初探swift语言的学习笔记十一(performSelector)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  8. 初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/31824179 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  9. 初探swift语言的学习笔记三(闭包-匿名函数)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

最新文章

  1. python【力扣LeetCode算法题库】2-两数相加
  2. 参数构造错误 微信_快速掌握前端开发中的常见错误
  3. android listview 禁止滚动
  4. php zhegnze_php 正则表达式
  5. linux和windows双系统互拷文件乱码问题
  6. Linux 守护进程的启动方法
  7. 30岁以上的女人应选择什么品牌的眼霜?
  8. Hadoop之MapReduce理论篇01
  9. windows bat定时重启软件
  10. python爬虫学习(4) —— 手刃「URP教务系统」
  11. northwind数据库mysql下载_SQLEXPRESS 2012 安装NorthWind和Pub数据库
  12. 哪吒票房超复联4,100行python代码抓取豆瓣短评,看看网友怎么说
  13. 美国交通安全管理局出台更加严格机场安全检查新规
  14. 神奇的三门问题,到底换不换门
  15. 阿里云同一账号下ECS服务器的克隆操作方法,你get到了吗
  16. 趣头条老是旧闻重复,怎么处理 | 伪原创视频需要改什么
  17. C#—飞行棋超全总结(全注释版)
  18. 【这很AI】谷歌再推AI应用“名画匹配”:与博物馆7万幅历史名画匹配,结果可能是梵高
  19. 彻底解决Qt中文乱码
  20. 百度CTO王海峰:亚洲丰富实践场景推动AI技术落地探索

热门文章

  1. Python+Flask+Echart+WordCloud:豆瓣爬虫项目的可视化数据
  2. 九十一、前端可视化ECharts的使用
  3. 化工热力学:第三章 纯流体的热力学性质
  4. 阿里巴巴淘系开源大型3D家具数据集(3D-FUTURE)推动3D家居智能研究
  5. 从工作的角度,NLP/CV/推荐系统选哪个?
  6. 基线系统需要受到更多关注:基于词向量的简单模型 | ACL 2018论文解读
  7. 每周论文清单:高质量文本生成,多模态情感分析,还有一大波GAN | PaperDaily #26
  8. centos7下使用yum安装pip
  9. nn.AdaptiveAvgPool1d()
  10. LeetCode 10 正则表达式匹配