美文网首页iOS面试题
iOS面试题:对于block的理解

iOS面试题:对于block的理解

作者: iOS心安 | 来源:发表于2020-12-07 16:28 被阅读0次

    1. 什么是block?

    • block跟swift中的闭包(closure)基本一样,都常用于值的回调,特别是在多线程的网络请求回调中,使用起来极为方便。其中闭包就是能够读取其它函数内部变量的函数。

    • block的开头是“^”,接着是由小括号所报起来的参数列,行为主体由大括号包起来。block有四种类型,分别是无参无返回、无参有返回、有参有返回、以及有参无返回,而一般使用的block都是有参block,因为使用block主要就是进行参数的传递。

    • block是一个特殊的OC对象, 它建立在栈上, 而不是堆上, 这么做一个是为性能考虑,还有就是方便访问局部变量.
      默认情况下block使用到的局部变量都会被复制,而不是保留.所以它无法改变局部变量的值.

    • 如果要在block中修改外部变量,当变量是static全局变量时,block可以直接修饰,如果不是,可以用__block关键字来修饰,就可以在block内修改变量的值。

    2. block 实现原理

    Objective-C是对C语言的扩展,block的实现是基于指针和函数指针。
    从计算语言的发展,最早的goto,高级语言的指针,到面向对象语言的block,从机器的思维,一步步接近人的思维,以方便开发人员更为高效、直接的描述出现实的逻辑(需求)。

    多线程与block
    GCD与Block
    使用 dispatch_async 系列方法,可以以指定的方式执行block

    作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:711315161,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

    相关文章

      网友评论

        本文标题:iOS面试题:对于block的理解

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