iOS的通知Notification

这里是不同的对象之间的通知, 不是本地通知.

一开始玩, 很挠头, 后来发现原来只是对象init的过程出了问题.

首先, 新建一个简单的单controller的工程.

然后打开它的ViewController.m文件

@interface ViewController ()
@property  NotifyObserver *obj;    //这里是关键, 应该有一个property是另一个要通知的类的, 我之前写在了viewDidLoad里面, 结果死活通知没有响应, 其实原因是这个对象在viewDidLoad方法完成后就自动销毁了, 还通知个屁.

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   self.obj=[[NotifyObserver alloc] init]; //这里init了一个要通知的对象.

//NotifyObserver *obj=[[NotifyObserver alloc] init]; 之前是这么写的, 折腾了两个小时, 应该抽自己....
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (IBAction)notifyButtonPressed:(id)sender {
    NSLog(@"pressed");
    //这里开始通知了, 还留下一个问题是如何拿到userInfo, 先不管, 总之发送了一个名为updateMessage的通知, 内容就是my object.
    NSNotification *notification = [[NSNotification alloc] initWithName:@"updateMessage" object:@"my object" userInfo:@{@"Status": @"Success"}];

[[NSNotificationCenter defaultCenter] postNotification:notification];

}

@end

谁要接收这个通知, 就要去注册一下

@implementation NotifyObserver

-(id)init{
    NSLog(@"init");

//在init方法里面注册自己是一个观察者, 然后定义自己只接收"updateMessage"的通知, 别乱七八糟的啥都通知我, 另外, 如果通知到了, 麻烦运行update方法, 记得后面有个":"意思是自己是带形参的方法, Java母语的人笑而不语
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(update:) name:@"updateMessage" object:nil];   
    return self;
}
-(void)dealloc{
   //记得这个对象要被销毁时, 要移除注册
   [[NSNotificationCenter defaultCenter] removeObserver:self];
}

//这个update方法就是通知的回调, 一旦通知来了, 就麻烦运行这个方法.
-(void) update :(NSNotification *)notification
{
    NSLog(@"update");
    NSString* str = (NSString*)[notification object];//这里取出刚刚从过来的字符串
    NSLog(@"%@",str);
}

@end

几乎一天时间学会通知Notification, 够慢的....

越来越觉得iOS就是简单啊.....

通知, 委托, 这两个设计模式iOS玩得溜啊...

时间: 2024-09-28 20:40:23

iOS的通知Notification的相关文章

iOS消息通知Notification的用法

1.发送消息 1 NSNotification *notification = [NSNotification notificationWithName:@"selectPosition" object:nil userInfo:@"codeABC" forKey:@"code"]; 2 [[NSNotificationCenter defaultCenter]postNotification:notification]; 2.接收消息 1 -

iOS开发中通知(Notification)快速入门及推送通知实现教程

iOS开发中通知(Notification)快速入门及推送通知实现教程 标签: NSNotificationCenterNSNotification 2016-11-14 00:18 232人阅读 评论(0) 收藏 举报  分类: iOS(400)  转载自:http://www.111cn.NET/sj/ios8/90190.htm 通知(Notification)是开发框架中观察者模式的一种实现方式,内部的实现机制由Cocoa框架支持,通常用于试图控制器和数据模型的交互.通过通知,可以向一个

IOS 本地通知UILocalNotification

//发送通知    UILocalNotification *notification=[[UILocalNotification alloc] init];       if (notification!=nil) {         NSDate *now=[NSDate new];         notification.fireDate=[now dateByAddingTimeInterval:10];//10秒后通知        notification.repeatInterv

观察者模式的具体应用——通知(notification)机制和KVO(Key-Value-Observing)机制

在Cocoa Touch框架中,观察者模式的具体应用有两个——通知(notification)机制和KVO(Key-Value-Observing)机制. 1.通知机制. 在iOS中通知主要有以下三种:广播通知.本地通知和推送通知.本文所说的通知是广播通知,广播通知除了名字和后两者相似之外其他完全不同.广播通知是Cocoa Touch框架中实现观察者模式的一种机制,它可以在一个应用内部的多个对象之间发送消息:本地通知和推送通知是给用户一种提示,比如警告对话框.发出声音.震动或者在应用图标上面显示

ios 的通知机制

ios 的通知机制,包括通知发布,通知监听,通知移除. 1.通知发布 要发布通知前,要先创建通知对象,一个通知对象包括 通知发布者:发布通知到通知中心: 通知中心:接收通知发布者发布的通知,并转发给通知接收者. 通知接受者:接收从通知中心发布的通知. 一个通知对象要包含的内容: 1. (NSString *)name; // 通知的名称 2. (id)object; // 通知发布者 3. (NSDictionary *)userInfo; // 一些额外的信息(通知发布者传递给通知接收者的信息

IOS 本地通知

在苹果的Mac OSX 和IOS开发的API中有三个不同的"通知",包括:广播通知,本地通知和推送通知. 本地通知只是应用所在设备上给用户通知,而推送通知是远程通知,他是由远程服务器推送过来的 本节主要是讲的本地通知,虽然本地通知并没有任何的网络通信,但是他在编程方面与后面要介绍的推送通知非常相似.我们的例子中有三个按钮,"计划通知开始"按钮开启计划通知,他在10秒钟后到达."停止所有计划通知"按钮式停止和取消已经开始的计划通知."立刻

通知 Notification 详解

效果 通知栏-刚收到通知时 通知栏-收到通知几秒后 标准视图 大视图-下滑前是标准视图 大视图-下滑后显示大视图 自定义通知 讲解 Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容. 注意:因为一些Android版本的兼容性问题,对于Notification而言,Android3.0是一个分水岭,在其之前构建Notification推荐使用Notification.Builder构建,而在An

【Android】状态栏通知Notification、NotificationManager详解(转)

在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationManager . Notification. NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等. NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取. [java] view plainc

IOS NSNotificationCenter 通知的使用

1.注册通知 [NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notify) name:@"myNotify" object:nil]; -(void)notify { NSLog(@"notify"); } 2.触发通知 [NSNotificationCenter defaultCenter] postNotificationName:@"myNotify&