UserDefault和Notification
一、用户偏好设置
UserDefault的本意其实就是用户的偏好设置,他存储到路径在Home/Library/Preferences当中的扩展名为。plist的文件中。那么cocoa是通过NSUserDefaults对象实现用户偏好设置的。
基本的流程是,应用程序首先会注册一个用户偏好,然后可以读或者设定用户偏好,这些其实是通过NSUserDefaults的消息实现的。
其实每个程序运行的时候,都会有一个共享的defaults,叫做standardUserDefaults。
那么注册defaulsts,是使用NSDictionary对象或者NSMutableDictionary实现的。方法为registreDefaults
用户偏好的命名其实使用的就是UTI,统一标示符。
NSUserDefaultsController,在binding界面选择,目的是为了实现特定偏好的绑定功能。
命令行,通过defaults read *。plist,实现命令行的用户偏好读取。
二,Notification
为什么会有notification,就是当已经运行的程序,在运行的过程中,需要就行改变时,一个比较好的方式是将改变通知给相关的子窗口。
通知的基本过程是,首先一个对象向notificationcenter注册,成为一个特定notifcation消息的观察者,然后其他的对象会向notificationcenter发送notification,当notification center发现了这个notification的观察者之后,notificationcenter会发送消息给observer。
另外需要注意的是notification 的实现机制,只能够在进程内部实现,不能够跨进程实现。
cocoa实现方法是通过NSNotification 和NSNotificationCenter实现的。
NSNotification,其实是一个比较简单的对象,他包含了通知名称和发送该通知的对象。
每个程序在运行的时候,都有一个NSNotificationCenter对象在后台运行。
NSNotificationCenter的重要方法:
-(void)addOberver:(id)anObserver selector:(SEL)aSelector name:(NSString*)notificationName object:(id)anObject
注册观察者,对notificationName感兴趣,然后调用aSelector去做动作进行执行。
-(void)postNotification:(NSNotification*)notification
发送notification向notification center。
-(void) postNotificationName:(NSString*)name object:(id)object userInfo:d
创建并发送一个notification。
- (void)removeObserver:(id)observer
删除一个观察者
UserInfo字典,可以通过notification传递更多的信息。
补充delegate和notification的关系。
其实对于一些cocoa自带的对象,也是带有预定义的notification消息的。比如NSWindow。那么对于向这些标准对象注册的delegate,有时候也想成为可以接收notification的对象,此时只需要实现notification的方法就可以了。
比如NSWindowDidResizeNotification消息,他的notification的委托实现方法为:
-(void)windowDidResize:(NSNotification*) Notification
这就是一个标准的逻辑,去掉NS,并小写第一个字母,然后去掉Notification就可以实现委托接收通知。
UserDefault和Notification相关推荐
- 外企邮件回复模板_电子邮件回复模板
外企邮件回复模板 If you frequently type the same responses to email questions, you can use an email response ...
- Notification 使用详解
录制了一个gif 图大家看看效果 由于手机厂商修改问题,这个显示可能存在差役,但是这个提示框都是会显示的,运行是在android 7 8 ,9 三个版本运行的都没有问题 下面开始介绍它的使用 Noti ...
- Notification和KVO有什么不同
Notification是推送通知,我们可以建立一个通知中心,存放创建多个通知,在不同的地方在需要的时候push调用 和KVO不同的是,KVO是键值观察,只能观察一个值,这就是区别 转载于:https ...
- 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例...
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE ...
- 谷歌 notification 测试 页面
1 <button onclick="notifyMe('master wei','http://cdn.sstatic.net/stackexchange/img/logos/so/ ...
- android8 通知呼吸灯_Android中通知Notification使用实例(振动、灯光、声音)
本文实例讲解了通知Notification使用方法,此知识点就是用作通知的显示,包括振动.灯光.声音等效果,分享给大家供大家参考,具体内容如下 效果图: MainActivity: import ja ...
- notification antd 弹窗使用示例
示例代码 import { notification } from 'antd';notification.error({description: '您的网络发生异常,无法连接服务器',message ...
- android之Notification通知
我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. pac ...
- gitlab+jenkins+maven+docker持续集成(四)——Extended E-mail Notification配置
构建后进行邮件通知,这里我们用Extended E-mail Notification 系统管理-->Extended E-mail Notification 在这里subject.conten ...
最新文章
- LeetCode简单题之两个列表的最小索引总和
- RDKit | 通过分析活性化合物确定指标阈值
- Redis 的持久化方案
- ava method org.apache.struts2.components.Form.getValidators(String) threw an exception when invoke
- python的函数_Python 返回函数+匿名函数
- 怎么看电脑配置高不高_辣椒产量高不高?关键看播种前的种子处理,你知道怎么做吗?...
- 可视化神器Scikit-plot实践入门
- 【进阶版】 机器学习之聚类算法原理详解+案例解说(14)
- redis中内存碎片处理
- 服务器发送 微信通知,方糖,使用微信通知的小接口
- Netty8# Netty之ByteBuf初探
- 用MATLAB绘图 等边三角形,信标节点位于等边三角形顶点的MATLAB仿真
- 计算机的诞生以及四个发展阶段,计算机发展历史的四个阶段.docx
- 【MATLAB教程案例47】基于双目相机拍摄图像的三维重建matlab仿真
- JQuery加载图片自适应DIV大小
- python注册用户名和密码登录_Python_36用户名密码登录注册的例子
- leetcode17 Sum of Two Integers
- 虚拟现实技术实现理论之梦境论述
- 7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
- 分布式计算的基本原理
热门文章
- 小程序文本无法自动换行 view text
- 【Springboot系列】如何去除CONDITIONS EVALUATION REPORT打印
- 电脑为什么越来越卡?
- 【23考研】计算机择校信息库—广东高校计算机相关专业22专业目录分类汇总(按专业课分类汇总)
- Mongodb时间类型转换
- 项目协作平台Smartsheet获得5210万美元投资,估值8.52亿美元
- AIE磷脂化合物微球/AIE分子脂质体磷脂化合物微球/表面基团修饰AIE微球的制备过程
- in作为介词的用法_三分钟弄懂“at”,“in”,“on”三个时间介词的基本用法!...
- m2接口和nvme协议接口_如何判断M.2接口能否安装NVMe固态硬盘?
- VIM中去除Windows文本中的^M符号,多种方法