原创文章,欢迎转载。转载请注明:关东升的博客
通知(Notification)机制是基于观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是 MVC(模型-视图-控制器)模式的重要组成部分。
问题提出
天气一直是英国人喜欢讨论的话题,而最近几年天气的变化也成为中国人非常关注的话题。我会根据天气预报决定是坐地铁还是开车上班,我的女儿也会根据天气预报决定明天穿哪件衣服。于是我在移动公司为我的手机定制了天气预报短信通知服务,它的工作模型如图所示。
每天气象局将天气预报信息投送给移动运营商,移动运营商的短信中心负责把天气预报发送给定制过这项服务的手机。
在软件系统中,一个对象状态改变也会连带影响其他很多对象的状态发生改变。能够实现这一需求的设计方案有很多,但能够做到复用性强且对象之间匿名通信的,观察者模式是其中最为适合的一个。
解决方案
通知机制可以实现“一对多”的对象之间的通信。如图所示,在通知机制中对某个通知感兴趣的所有对象都可以成为接收者。首先,这些对象需要向通知中心(NSNotificationCenter)发出addObserver消息进行注册通知,在投送对象通过postNotificationName消息投送通知给通知中心,通知中心就会把通知广播给注册过的接收者。所有的接收者都不知道通知是谁投送的,更不关心它的细节。投送对象与接收者是一对多的关系。接收者如果对通知不再关注,会给通知中心发出removeObserver消息注销通知,以后不再接收通知。
相关推荐
Swift编程语言以其强大的功能和易读性在iOS应用开发领域占据了一席之地,而CocoaTouch框架则是构建iOS应用程序的核心工具。本视频教程将引导您深入理解CocoaTouch,并逐步掌握开发iOS应用的关键技巧。 首先,Cocoa...
本书主要针对苹果的两大操作系统平台,即iOS和macOS,提供了丰富的实践经验和专业指导,帮助开发者在使用Cocoa、Cocoa Touch、Objective-C和Swift开发应用时实现最佳性能。 首先,Cocoa和Cocoa Touch是苹果为macOS...
在Cocoa框架中,设计模式扮演着至关重要的角色,它们为开发者提供了标准的解决常见问题的方法,提高了代码的可读性和可维护性。Cocoa基于Objective-C,这门语言支持面向对象特性,如消息传递、类别和协议,使得实现...
3. **Cocoa设计模式**:Cocoa遵循Model-View-Controller (MVC)架构模式,将应用程序分为模型、视图和控制器三个部分。理解MVC的原理和实践是Cocoa编程的关键。 4. **Interface Builder**:这是Apple的可视化设计...
Swift 与 Cocoa 框架的研发是iOS和macOS应用开发的核心,这涉及到Apple的强大的开发工具链,包括Xcode IDE、Swift编程语言以及Objective-C的Cocoa框架。本资源"Swift Development with Cocoa 1st Ed"是一个开源项目...
《COCOA设计模式 完整版 中文版》是一本专为iOS开发者深度学习COCOA框架而准备的高级进阶书籍。COCOA,全称“Cocoa Touch”,是Apple开发的用于构建iOS应用的主要框架,它包含了Objective-C和Swift编程语言中的大量...
Cocoa Touch是iOS应用开发的核心组成部分,它是Apple为移动设备设计的一个框架,主要负责处理用户交互、图形界面和应用程序的基本结构。Cocoa Touch是从Mac OS X的Cocoa框架发展而来,经过优化以适应触摸屏操作和...
通过阅读本书,读者能够学会如何利用Swift语言,结合Cocoa和Cocoa Touch框架,创建适用于iPhone、iPad和Mac的应用程序。该书提供了大量实际案例,介绍了如何在真实世界场景中使用Swift语言进行编程,并通过实践练习...
iOS 11 Programming Fundamentals with Swift Swift, Xcode, and Cocoa Basics 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Cocoa Touch 是苹果公司为iPhone和iPad等移动设备设计的应用程序框架。它基于Objective-C语言,并利用了Core Animation和Core Data等底层技术来实现高效的应用程序开发。在本书中,Cocoa Touch框架被详细介绍,包括...
《iOS应用源码解析:netshade-Cocoa-Touch-Barcodes-dfde76f》 在iOS开发领域,源码是学习和理解技术的关键。"netshade-Cocoa-Touch-Barcodes-dfde76f.zip"这个压缩包包含了iOS应用的源代码,专门涉及到Cocoa Touch...
leetcode ...文件类型,然后将其转换为为应用程序设计的类。 Monshot - 应用程序存储有关人类历史上发生的每个月球任务的信息。 它显示有关任务本身以及宇航员的数据。 一切都存储为 JSON 文件。 练习乘法-
4. **Model-View-Controller (MVC)**:Cocoa和Cocoa Touch都遵循MVC设计模式,这是一种将数据模型、视图和控制器分离的设计思想,有利于代码组织和维护。 5. **Auto Layout**和Size Classes:用于在不同屏幕尺寸和...
《iOS应用源码解析——深度探索robin-cocoa-web-resource-8f47f25》 在iOS开发中,源码是理解应用程序工作原理的关键。"robin-cocoa-web-resource-8f47f25"是一个专门针对iOS应用的源码库,它包含了用于构建iOS应用...
iOS实例开发源码——cocoa-fluff-CoolrSwap-b590080.zip
Cocoa Touch是Apple iOS开发的核心组成部分,其主要的UI构建框架就是UIKit。UIKit提供了一系列的类和接口,用于创建和管理iOS应用的用户界面、处理用户交互以及进行系统级别的任务。在iOS开发中,开发者通常会用到...
Cocoa Touch for iPhone OS 3 (pdf 书及源代码) Join the gold rush to developing cool iPhone apps with this complete iPhone OS 3 developer’s guide. Professional developer Jiva DeVoe speaks your ...
treemapkit, Cocoa Touch for ( iphone/ipod touch/ipad ) TreemapKitTreemapKit是 Cocoa Touch的treemap实现。 你可以在 iPhone,iPod touch和iPad中显示 TreeMaps 。点击这里看一下简单的演示软件。 许可证...