iOS 让delegate进行一对多通信

2019-07-25  本文已影响0人  zxb有缘

在开发IOS应用的时候,一个类与另一个类之间的通信方式通常有四种模式:

1、委托delegation
2、通知中心Notification Center
3、block
4、键值观察key value observing,KVO
但是,有时候我们会出现一个类同时和多个类进行通信的情况,这时候大家通常会使用Notification,它可以一对多进行通信;但是Notification有一定的局限性,例如:1.不能从观察者获得任何的反馈信息(相比于delegate);2.Notification不关心接受者的态度,只管把通告放出来;如果使用delegate就可以避免这些不足之处;

delegation 实现一对多通信:

MessageSingleton.h (我为了方便演示使用了单例)

import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
@class MessageSingleton;
@protocol MessageSingletonDelegate <NSObject>

@end

@interface MessageSingleton : NSObject

/**

/**

/**

NS_ASSUME_NONNULL_END

MessageSingleton.m

import "MessageSingleton.h"

@interface MessageSingleton()
/**

/**

@implementation MessageSingleton

pragma mark - get & set

pragma mark - delegate

pragma mark - call delegates

@end

在A类中实现MessageSingletonDelegate:

import "ViewController.h"

import "MessageSingleton.h"

@interface ViewController ()<MessageSingletonDelegate>

@end

@implementation ViewController

@end

同时在B类中也实现MessageSingletonDelegate:

import "NextViewController.h"

import "MessageSingleton.h"

@interface NextViewController ()<MessageSingletonDelegate>

@end

@implementation NextViewController

运行可以看到,MessageSingleton发出的delegate可以在A类和B类中都能收到.

上一篇 下一篇

猜你喜欢

热点阅读