IOS开发 为啥要用block

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS开发 为啥要用block相关的知识,希望对你有一定的参考价值。

ios开发 为什么要用block,利用block主要用途是代替delegate吗

我认为block主要是替代selector。对于一个包含少量代码的方法可以放到一个block中而不用重新定义个方法,增加代码的可读性。
比如通知中心(NSNotificationCenter)事件的回调(addObserver)可以指定一个函数,也可以直接用block,(@selector或者usingBlock^),如果只要执行简单的几句代码,就可使用后者,省去新定义一个方法的麻烦。
不过使用block时需要注意一些问题,尤其引用计数的问题会导致一些东西不能正常释放,具体需要多看些资料。
跟delegate没什么关系。
参考技术A Block相当于Objective-C的匿名函数,Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观。另外,block的实现具有封闭性(closure),而又能够很容易获取上下文的相关状态信息,因此ios开发中会用到block。
实际上,block使用了与函数相同的机制,可以像声明函数一样,来声明一个bock变量;可以利用定义一个函数的方法来定义一个block;也可以将block当做一个函数来调用。

iOS开发系列-Block

概述

Block也是一种数据类型,用于保存一段代码。

Block基本使用

Block的声明定义

  • 声明一个block类型的变量

     返回值类型(^blockName)(参数类型列表)
  • 定义一个block

    ^返回值类型(参数列表) {
    
    };

    Block的定义不管有没有返回值,在定义时返回值类型可以省略。当一个block没有参数时Block定义^后面的括号也可以省略。

    // 标准的声明与定义一个block
    void (^block)() = ^void(){
    
    };
    
    // 定义省略返回值
    void (^block)() = ^(){
    
    };
    
    // block没有返回值省略^后面的括号
    void (^block)() = ^{
    
    };

以上是关于IOS开发 为啥要用block的主要内容,如果未能解决你的问题,请参考以下文章

手机移动端web开发的时候为啥要用js跳转链接来代替a标签的跳转?

在vue项目开发中, 为啥图片要用require 引入。。。而不是直接写本地路径

开发iOS程序一定要用object-c吗?可以用C/C++么?

Linux里面gitlab上传后,为啥要用Jenkins构建?

为啥要用nodejs服务

Android Studio为啥要用Gradle