众所周知,iOS中一般在类之间传递消息使用较多的是delegate和block,还有一种是基于通知进行的消息传递,我们常常是使用系统的通知,来实现一些功能,例如利用键盘尺寸改变的通知,我们可以根据键盘的位置改变输入框的位置,从而避免输入框被键盘遮挡。

除了利用系统的通知,我们还可以通过自己创建通知的办法来完成一些消息传递,以XMPP登录为例,如果用户之前没有注销,那么在启动客户端时应该自动登录,登录在XMPP的工具类完成,而当前视图在登陆完成之前应当用网络连接的指示器(Activity Indicator)旋转指示,而连接完成后应当隐藏指示器,何时连接成功就需要工具类通知视图控制器,我们这次用通知来实现。

通知要实现非常简单,只需要监听和发送即可,回忆一下当时监听键盘,需要指定通知的名称,标准格式是类名+功能+Notification,比较长,因此用一个常量字符串来获取类名,防止输入错误。

①创建常量字符串:

直接在发送通知的.m头部写:

NSString *const WCLoginStatusChangeNotification = @"WCLoginStatusNotification";

然后在.h中声明,以便监听通知时调用:

extern NSString *const WCLoginStatusChangeNotification;

②让视图控制器监听通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginStatusChange:) name:WCLoginStatusChangeNotification object:nil];

然后实现监听方法,参数为NSNotification对象,其中有一个userInfo成员属性用于传递消息,是一个字典。

③发送一个通知:

[[NSNotificationCenter defaultCenter] postNotificationName:WCLoginStatusChangeNotification object:nil userInfo:<字典>];

传递参数利用的是userInfo参数,只需要赋一个字典,即可传递到监听的事件函数中。

(七十二)自定义通知NSNotification实现消息传递的更多相关文章

  1. “全栈2019”Java第七十二章:静态内部类访问外部类成员

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. TNFE-Weekly[第七十二周已更新]

    前端行业发展飞速,新技术如雨后春笋般快速出现,尤其是各种小程序陆续推出,相关的信息.文章也铺天盖地的遍布在各处,我们有时候会困惑,不知道哪些信息对于自己是有价值的,那么TNFE-腾讯新闻前端团队启动了 ...

  3. (七十二)自己定义通知NSNotification实现消息传递

    众所周知,iOS中一般在类之间传递消息使用较多的是delegate和block,另一种是基于通知进行的消息传递,我们经常是使用系统的通知.来实现一些功能.比如利用键盘尺寸改变的通知,我们能够依据键盘的 ...

  4. GridView七十二绝技-大全(收藏版)(转至别人博客)

    快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠 ...

  5. OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体

    前言   级联分类器的效果并不是很好,准确度相对深度学习较低,本章使用opencv通过tensorflow深度学习,检测已有模型的分类.   Demo       可以猜测,1其实是人,18序号类是狗 ...

  6. salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)

    项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到 ...

  7. C#编程(七十二)----------DynamicObject和ExpandoObject

    DynamicObject和ExpandoObject 1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么? 案例: //Ex ...

  8. (七十二)c#Winform自定义控件-雷达图

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  9. 七十二:flask钩子函数之关于errorhandler的钩子函数

    errorhandler:在发生一些异常的时候,如404.500,如果要自定义处理这些错误,就可以使用errorhandler来处理,使用errorhandler需要注意几点: 1.在errorhan ...

随机推荐

  1. Python中def及lambda的功能介绍

    函数def及lambda的功能介绍 1. def函数的功能介绍 1. 函数的参数 无参数函数 格式:def func_name(): '''__doc__'''#函数的说明文档(内容) express ...

  2. c语言程序第2次作业

    (一)改错题 1.输出带框文字:在屏幕上输出以下3行信息. 错误信息1:{{uploading-image-560144.png(uploading...)} 错误原因:stdio误写为stido 错 ...

  3. PHP 中 config.m4 的探索

    PHP 中 config.m4 的探索 最近在看php扩展相关的东西,虽然来来回回编辑了好多次config.m4,并且也在技术社区看到了 config.m4是什么?什么作用? 类的问题,但是还是觉得有 ...

  4. jquery easyui combox不能编辑只能选择

    $('#tts').combobox({ editable:false });

  5. lgp20151222 java中如何将Object类型转换为int类型

    if (object instanceof Integer) {    Integer.parseInt(object.toString()); } 很简单是不是?我就想提醒下自己,java有个特殊词 ...

  6. debug的一些按钮意义

    F9 resume programe 恢复程序 Alt+F10 show execution point 显示执行断点 F8 Step Over 相当于eclipse的f6 跳到下一步 F7 Step ...

  7. Ubuntu 16.04.4 LTS下安装JDK

    写在前面 为什么我又装jdk?今天顺手升级了我的双系统中的ubuntu,开始的时候用的图形化界面升级,后来你懂的,升级软件死锁了.. 用命令行也没有效果了,提示锁被占用,手残重启试试,彻底崩了...我 ...

  8. Python教学相关资料

    Python教学调查链接 一.专题 1.绘图 如何开始使用Python来画图 Python画图总结 2.科学计算与数据分析 3.可视化 4.网络爬虫 5. 做笔记 Python-Jupyter Not ...

  9. java.io.FileNotFoundException: D:\Program%20Files\Apache%20Software%20Foundation\Tomcat%205.0\webapp

    慢慢把以前遇到过的问题一点点发出来,以前做的笔记比较杂: java.io.FileNotFoundException: D:\Program%20Files\Apache%20Software%20F ...

  10. Redis Cluster架构优化

    Redis Cluster架构优化 在<全面剖析Redis Cluster原理和应用>中,我们已经详细剖析了现阶段Redis Cluster的缺点: 无中心化架构 Gossip消息的开销 ...