iOS-观察者设计模式

NSNotificationCenter.defaultCenter().addObserver(<#observer: AnyObject#>, selector: <#Selector#>, name: <#String?#>, object: <#AnyObject?#>)

 

NSNotificationCenter.defaultCenter().addObserver(self自己就是观察者, selector: ""选择处理通知的方法(接收通知的方法), name: ""通知的名字, object: nil对象为空)

 

下面红色标注部分是错的部分

 

import UIKit

class ViewController: UIViewController {
   
   
    @IBAction func onClick(sender: AnyObject) {
        var  resViewController = self.storyboard?.instantiateViewControllerWithIdentifier("navViewController") as UINavigationController
        self.presentViewController(resViewController, animated: true ) { () -> Void in
            NSLog("弹出模态视图")
        }
    }
   
   
    //主要是方法后面没有加上冒号,接收通知的是一个方法,需要加上冒号,不加冒号表示字符串。
    override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self,
            selector: "registerCompletion:",
            name: "RegisterCompletionNotification", object: nil)
       
        //监听系统通知
        NSNotificationCenter.defaultCenter().addObserver(self,
            selector: "handleEnterBackground:",
            name: UIApplicationDidEnterBackgroundNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self,
            selector: "handleEnterForeground:",
            name: UIApplicationWillEnterForegroundNotification, object: nil)
    }
   
   
   
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
   
   
    //TODO接收通知
   
    func registerCompletion(notification : NSNotification) {
       
        let userInfo:Dictionary<String,String!> = notification.userInfo as Dictionary<String,String!>
        let username = userInfo["username"]!
        NSLog("username = %@",username)
    }
   
    func handleEnterBackground(notification : NSNotification) {
        NSLog("进入到后台")
    }
    func handleEnterForeground(notification : NSNotification) {
        NSLog("回到前台")
    }
   
   
}

时间: 2024-10-05 22:58:51

iOS-观察者设计模式的相关文章

iOS常用设计模式——观察者设计模式

观察者设计模式详解 观察者设计模式详解 基本概念 NSNotificationCenter的使用 添加监听 接收消息 删除监视 KVO的使用 基本概念 注册观察者 观察者对象发生变化时的回调方法 remove观察者身份 代码实现 基本概念 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己.而在IOS开发中我们可能会接触到的经典观察者模式的实现方式,有这么几种:NSNotificationCen

观察者设计模式

/** * 事件接口即被观察者 * * @author Host * */ publicinterface Event { void attach(Listener listener); void detach(Listener listener); void notifyListener(); } /** * 事件监听者观察者 * * @author Host * */ publicinterface Listener { void execute(); } 事件源的一个实现类(磁盘事件) p

(java)从零开始之--观察者设计模式Observer

观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对象的动作做出的相应处理方法定义在接口上(这是一种规范,凡事需要A对象通知的对象,都要实现该接口). 2. 在A对象维护接口的引用,当A对象发生指定的动作这时候即可调用接口中的方法. 观察者模式的应用场景: 1. 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变. 2.对象仅需要

监听器和 利 用观察者设计模式设计一个程序

一.监听器概念 1.事件源:发生事件的对象. 2.监听器:是一个接口,监听事件源上要发生的动作 3.事件:事件对象一般是作为监听器方法的参数存在的,它封装了发生事件的对象 二.Servlet中提供的监听器(8个) 八个监听器分类: 2.1监听ServletContext.HttpSession.ServletRequest对象的创建和销毁的监听器. ServletContextListener:监听ServletContext对象的创建和销毁. HttpSessionListener:监听Htt

iOS 关于 设计模式 与网友讨论实录

关于 设计模式 与网友讨论实录 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 其实本篇就是想记录一下自已的一句对自已的总结,可能以前都没有意识到吧: 本图片版权归网友 杭州-老虎 所有. iO

观察者设计模式 Vs 事件委托(java)

观察者设计模式 Vs 事件委托 转载请注明原博客地址: http://blog.csdn.net/gdutxiaoxu/article/details/51824769 源码下载地址: http://download.csdn.net/detail/gdutxiaoxu/9567209 本篇博客主要讲解一下几个问题 什么是观察者模式 观察者模式的优缺点 如何看待观察者模式的缺点 事件的委托 什么是观察者模式 简单来说,当有多个观察者想同时观察同一个主题对象的时候,当主题对象的 状态发生变化,观察

iOS.常用设计模式.02.委托模式

WTDelegate #import <Foundation/Foundation.h> @protocol WTDelegate <NSObject> @required - (void)sleep; - (void)eat; - (void)work; @end WTPhilosopher.h #import <Foundation/Foundation.h> #import "WTDelegate.h" @interface WTPhiloso

iOS.常用设计模式.01.单例模式

使用单例模式的类: UIApplication UIAccelerometer NSUserDefaults NSNotificationCenter NSFileManager NSBundle等 Singleton.h #import <Foundation/Foundation.h> @interface Singleton : NSObject // 始终返回同一个Singleton的指针 + (Singleton *)sharedManager; @property (strong,

设计模式: 自己手动实现一个观察者设计模式

观察者模式: 定义了对象之间的一对多依赖,这样一来.当一个对象(被观察者)改变状态时,它的全部依赖者(观察者)都会收到通知并自己主动更新. 在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型. 用这个模式, 你能够改变依赖主题状态的对象.却不必改变主题.这叫提前规划. 主题和观察者都使用接口:观察者利用主题的接口向主题注冊.而主题利用观察者的接口通知观察者.这样能够让两者之间运作正常,有同一时候具有松耦合的长处. 观察者模式利用"组合"将很多观察者组合进主题中.对象之间的这样

JS观察者设计模式:实现iframe之间快捷通信

观察者设计模式又称订阅发布模式,在JS中我们习惯叫做广播模式,当多个对象监听一个通道时,只要发布者向该通道发布命令,订阅者都可以收到该命令,然后执行响应的逻辑.今天我们要实现的就是通过观察者设计模式,实现iframe之间的通信. 一.top对象 一般的JS书里都会在讲框架集的时候讲top,这会让人误解,认为top对象只是代表框架集,其实top的含义应该是说浏览器直接包含的那一个页面对象,也就是说如果你有一个页面被其他页面以iframe的方式包含了,无论包含的层级是什么,都可以用top访问最外层的