一、用户偏好设置

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相关推荐

  1. 外企邮件回复模板_电子邮件回复模板

    外企邮件回复模板 If you frequently type the same responses to email questions, you can use an email response ...

  2. Notification 使用详解

    录制了一个gif 图大家看看效果 由于手机厂商修改问题,这个显示可能存在差役,但是这个提示框都是会显示的,运行是在android 7 8 ,9 三个版本运行的都没有问题 下面开始介绍它的使用 Noti ...

  3. Notification和KVO有什么不同

    Notification是推送通知,我们可以建立一个通知中心,存放创建多个通知,在不同的地方在需要的时候push调用 和KVO不同的是,KVO是键值观察,只能观察一个值,这就是区别 转载于:https ...

  4. 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例...

    NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE ...

  5. 谷歌 notification 测试 页面

    1 <button onclick="notifyMe('master wei','http://cdn.sstatic.net/stackexchange/img/logos/so/ ...

  6. android8 通知呼吸灯_Android中通知Notification使用实例(振动、灯光、声音)

    本文实例讲解了通知Notification使用方法,此知识点就是用作通知的显示,包括振动.灯光.声音等效果,分享给大家供大家参考,具体内容如下 效果图: MainActivity: import ja ...

  7. notification antd 弹窗使用示例

    示例代码 import { notification } from 'antd';notification.error({description: '您的网络发生异常,无法连接服务器',message ...

  8. android之Notification通知

    我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. pac ...

  9. gitlab+jenkins+maven+docker持续集成(四)——Extended E-mail Notification配置

    构建后进行邮件通知,这里我们用Extended E-mail Notification 系统管理-->Extended E-mail Notification 在这里subject.conten ...

最新文章

  1. LeetCode简单题之两个列表的最小索引总和
  2. RDKit | 通过分析活性化合物确定指标阈值
  3. Redis 的持久化方案
  4. ava method org.apache.struts2.components.Form.getValidators(String) threw an exception when invoke
  5. python的函数_Python 返回函数+匿名函数
  6. 怎么看电脑配置高不高_辣椒产量高不高?关键看播种前的种子处理,你知道怎么做吗?...
  7. 可视化神器Scikit-plot实践入门
  8. 【进阶版】 机器学习之聚类算法原理详解+案例解说(14)
  9. redis中内存碎片处理
  10. 服务器发送 微信通知,方糖,使用微信通知的小接口
  11. Netty8# Netty之ByteBuf初探
  12. 用MATLAB绘图 等边三角形,信标节点位于等边三角形顶点的MATLAB仿真
  13. 计算机的诞生以及四个发展阶段,计算机发展历史的四个阶段.docx
  14. 【MATLAB教程案例47】基于双目相机拍摄图像的三维重建matlab仿真
  15. JQuery加载图片自适应DIV大小
  16. python注册用户名和密码登录_Python_36用户名密码登录注册的例子
  17. leetcode17 Sum of Two Integers
  18. 虚拟现实技术实现理论之梦境论述
  19. 7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
  20. 分布式计算的基本原理

热门文章

  1. 小程序文本无法自动换行 view text
  2. 【Springboot系列】如何去除CONDITIONS EVALUATION REPORT打印
  3. 电脑为什么越来越卡?
  4. 【23考研】计算机择校信息库—广东高校计算机相关专业22专业目录分类汇总(按专业课分类汇总)
  5. Mongodb时间类型转换
  6. 项目协作平台Smartsheet获得5210万美元投资,估值8.52亿美元
  7. AIE磷脂化合物微球/AIE分子脂质体磷脂化合物微球/表面基团修饰AIE微球的制备过程
  8. in作为介词的用法_三分钟弄懂“at”,“in”,“on”三个时间介词的基本用法!...
  9. m2接口和nvme协议接口_如何判断M.2接口能否安装NVMe固态硬盘?
  10. VIM中去除Windows文本中的^M符号,多种方法