美文网首页
iOS之代理,通知,Block

iOS之代理,通知,Block

作者: lkm_0bdc | 来源:发表于2023-06-30 00:01 被阅读0次

代理

代理也称委托,就是一件事情发生后,自己不处理,让别人去处理。其目的为了在程序直接解藕,让程序关系不是很紧密。代理是一对一消息传递,是一种设计模式
代理适用于回调比较频繁的情况,代码看着整洁,条理清晰

缺点:代码可读性差,使用起来比较麻烦,需要声明协议、声明代理属性、遵守协议、实现协议方法等。

代理的规范写法:类名+Delegate
方法的规范写法:类名+(第一个参数是类本身)+(其他参数)

截屏2023-06-25 上午10.53.51.png 截屏2023-06-25 上午10.53.59.png

通知

是一对多的通知模式,是iOS中一个调度消息通知的类,采用单例模式设计,在程序中实现传值、回调等地方应用很广。NSNotification & NSNotificationCenter是使用观察者模式来实现跨层传递信息

截屏2023-06-25 上午11.37.19.png

1.观察者接收到通知后执行任务的代码再发送通知到线程中执行

-(void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;

2.通知中心向观察者发送消息

-(void)postNotification:(NSNotification *)notification;
-(void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject;
-(void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo;

3.移除观察者

-(void)removeObserver:(id)observer;
-(void)removeObserver:(id)observer name:(nullable NSNotificationName)aName object:(nullable id)anObject;

Block

block是一对一的传值的协议,写法更加简练,方便使用。主要是用在响应事件和传值上,经常用的AFN就会用block进行回调传值.

block本质是一个对象,也是一个匿名函数(用函数式编程进行了保存,底层是有名的). 在底层的__main__block__impl__0 上有指出block是isa指针对象

block的使用方法和格式

截屏2023-06-30 下午6.36.51.png

引用:__weak typeof(self) weakSelf = self;
[yourBlock:^(NSArray *repeatedArray, NSArray *incompleteArray) {
[weakSelf doSomething];
}];

相关文章

  • iOS 代理,通知,Block

    1. 三者的传值对应关系 通知是”一对多”的关系。 通知不能再进程间进行。 代理和Block通常是”一对一”的关系...

  • ios开发之代理,block,通知

    ios开发中控制器与控制器之间的传值与联系,使用最多的是block,代理,通知.那么他们之间有什么区别以及怎么使用...

  • iOS开发基础:消息传递机制的不同与缺陷

    iOS中的消息传递机制有以下几种: 代理(Delegation) 通知(NSNotification) BLOCK...

  • 通知、代理、block

    通知、代理、block 是iOS中的三大回调方式。 通知 NSNotificationCenter,它就像一个广播...

  • 通知、代理、block

    通知、代理、block 是iOS中的三大回调方式。 通知 NSNotificationCenter,它就像一个广播...

  • ObJective-C之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

  • iOS开发之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

  • React-Native 与原生代码之间的事件传递

    熟悉 iOS 的同学都知道,controller 之间的事件传递有多种: 代理 block 通知 KVO 那么 R...

  • iOS 逆向传值

    代理(delegate)、通知(NSNotification),block等等。 1、委托代理delegate只能...

  • 代理/通知/block

    一:通知(NSNotification) 1.通知的发布 2.通知的监听 3.通知的移除 通知的监听需要在发布之前...

网友评论

      本文标题:iOS之代理,通知,Block

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