1-通知

作者: 千秋画雪 | 来源:发表于2016-10-29 00:46 被阅读37次

优缺点

优点:

一对多

缺点:

观察者销毁时要从通知中心移除


使用步骤:

  1. 到通知中心注册观察者
  2. 发送通知
  3. 接受通知后调用方法
  4. 在通知中心移除观察者

//
//  Baby.h

#import <Foundation/Foundation.h>

@interface Baby : NSObject

@property(nonatomic,retain)NSString *name;
@property(nonatomic,retain)id nurse;

- (instancetype)init:(NSString *)name;

- (void)eat;

@end
//
//  Baby.m

#import "Baby.h"

@implementation Baby

- (instancetype)init:(NSString *)name {
    
    if (self = [super init]) {
        self.name = name;
    }
    return self;
}

- (void)eat {
    NSLog(@"%@饿了",self.name);
    
    /**
     接受通知执行方法
     参数一:通知名称
     参数二:传递一个参数对象
     */
    [[NSNotificationCenter defaultCenter] postNotificationName:@"feed" object:self];
}

// 临终遗言
- (void)dealloc {
    NSLog(@"婴儿睡觉了");
}

@end
//
//  Nurse.h

#import <Foundation/Foundation.h>

@interface Nurse : NSObject

@end
//
//  Nurse.m

#import "Nurse.h"
#import "Baby.h"

@implementation Nurse

- (instancetype)init {
    if (self = [super init]) {
        
        /**
            *通知中心注册通知者
            *参数一:注册观察者对象,参数不能为空
            *参数二:收到通知执行的方法,可以带参
            *参数三:通知的名字
            *参数四:收到指定对象的通知,没有指定具体对象就写nil
            */
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notification:) name:@"feed" object:nil];
    }
    return self;
}

// 接受通知后实现的方法
- (void)notification:(NSNotification *)notification {

    Baby *b = notification.object;
    NSLog(@"给%@喂奶",b.name);

}

- (void)dealloc
{
    // 从通知中心移除通知者
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"feed" object:nil];
    NSLog(@"护士下班了");
}

@end

//
//  main.m

#import <Foundation/Foundation.h>
#import "Baby.h"
#import "Nurse.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        Baby *b = [Baby new];
        Nurse *nurse = [Nurse new];
        b.name = @"婴儿";
        b.nurse = nurse;
        [b eat];
        
    }
    return 0;
}

相关文章

  • 1-通知

    优缺点 优点: 一对多 缺点: 观察者销毁时要从通知中心移除 使用步骤: 到通知中心注册观察者 发送通知 接受通知...

  • Android Notificatin 通知

    通知的简单使用 1-通知渠道:android 8.0 必须设置通知渠道,否则通知不会显示。2-通知图标问题:and...

  • 运用Word来制作会议通知的文本格式

    运用Word来制作会议通知的文本格式 关-1- 注-1-公-1-众-1-号-1-"求学若渴"下载完整视频教程 会议...

  • 22日聚会

    1-王震开 ok 已通知2-彭国强 ok 已通知3-李俊华 ok 已通知4-段云峰 ok 已通知5-丁雨皋 ok ...

  • 暑假作业

    一、调研报告 本次报告为专业实践1-企业调查,具体要求请大家阅读通知、并结合上次见面会老师所谈。 学院通知网页:h...

  • 2021-04-29

    4/29/2021 work plan 1-电话 微信发一圈信息 2-放假通知 3-清洁教具教室 4-练习Anna...

  • Redis源码剖析--源码解读

    架构:单机,主从,集群 应用: 1-缓存、持久化2-订阅、发布(消息队列、消息通知)3-分布式锁4-分布式Sess...

  • 如何策划一场成功的互联网线上活动

    活动: 1- 需要有稳定的,大家都知道的,长期关注的活动通知渠道 所有的活动推送渠道都有标准的格式,最好有统一的界...

  • Android RemoteViews使用1-通知栏自定义布局

    1.Android RemoteViews 定义 Android RemoteViews 可用在Notificat...

  • 通知!通知!

    我到现在已有三位粉丝,现在我要开始发福利啦! 我下一篇文章开始写小说啦!希望大家多多支持!谢谢!

网友评论

      本文标题:1-通知

      本文链接:https://www.haomeiwen.com/subject/cuweuttx.html