美文网首页
消息传递的方式

消息传递的方式

作者: 纳兰沫 | 来源:发表于2020-10-15 15:38 被阅读0次

摘自消息传递的方式

1.说一下NSNotification 的实现机制?发消息是同步还是异步

哈希表+观察者模式

通知涉及到线程的知识,还有合成通知,交替是同步的等等
同步

2.KVO在使用过程中有什么注意点

1.在继承关系中,如果父类也绑定了一些KVO,子类在自己的路径中没有找到对应的路径是应该去父类找的,所以要显示调用super。
2.父类和子类有可能对同一个一个属性进行观察,我们知道如果对同一个属性的观察者可拆卸的两次会造成崩溃,所以我们每个类应该有唯一的Context进行区分。

3.简述KVO的注册依赖键是什么

+ (NSSet *)keyPathsForValuesAffectingPersonInfo
{
    return [NSSet setWithObjects:@"name", @"age", nil];
}

4.如何做到KVO手动通知?

显式的调用didChangeValueForKey:

如果想实现手动通知,我们需要采用一个额外的方法

+(BOOL)自动通知ObserversForKey :( NSString *)key

这个方法重新返回YES,使用标记Key指定的属性是否支持KVO,如果返回变量NO,则需要我们手动更新。

5.__block的解释以及ARC和MRC下有什么不同?

__block在MRC下可以解决循环引用的问题,block内部的变量有了__block修饰,引用计数不会加1。

在ARC下就需要使用__weak来实现了

6.Block自动截取变量

Block自动截取变量会截取所有权的修饰符,但是对全局变量以及静态全局变量是不会截取的。

对于基本数据类型可以理解为值得传递。
对于指针类型,可以理解为地址的传递

7.Block 和 函数指针 的区别?

- 函数指针仅仅是一个地址 不具备函数原型信息 没有类型限制 比如一个指向变量的指针同样可以指向一个函数 
但是 block作为函数地址 是有部分函数信息的 类型限制更明确
- block方式便于实现真正的函数式编程 让函数成为基本的运算元 真正的函数式语言可以去掉寄存器 提高程序
的执行效率 
- 提高程序的健壮性 定义函数的代码会位于函数的代码段 如果函数内部出现内存溢出 会直接导致crash 因为代
码段是不可写的   block作为函数对象在运行时生成 位于站内 即使出现内存溢出  一般也不会直接导致crash

dispatch_block_t是被提交到调度队列的代码块的原型,大家可以在代码块没有参数和返回值时使用这种高效方法去实现

相关文章

  • 消息传递的方式

    摘自消息传递的方式[https://github.com/liberalisman/iOS-InterviewQu...

  • iOS模式之二:代理模式

    iOS中消息传递方式 在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息传递方式。 通知:在iOS中由通知...

  • iOS开发需要掌握的技能篇

    基础知识储备1. iOS的消息传递方式-1.通知2.iOS的消息传递方式-2.代理3.iOS的消息传递方式-3.B...

  • 问题:什么是代理模式?

    在iOS中有很多种消息传递方式,首先简单了解一下常见的消息传递的几种方式 通知(notification):在iO...

  • websocket学习笔记

    websocket websocket是web传递消息的一种协议。web传递消息的方式主要有轮询(polling)...

  • iOS中消息传递方式

    通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式。 代理:是一种通用的设计模式,iOS...

  • Vue中EventBus的手动实现

    EventBus概要 EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式。这种方式的实现...

  • EventBus的实现

    EventBus概要 EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式。这种方式的实现...

  • vue组件通信总结

    对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的各种方式的总结,总共有8种方式。 1....

  • vue组件之间通信【8种方式】

    对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的各种方式的总结,总共有8种方式。 pr...

网友评论

      本文标题:消息传递的方式

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