block 从浅到深(一)

作者: 比沉默寡言话多 | 来源:发表于2016-07-31 13:38 被阅读110次

block的语法

//这一篇是讲给完全搞不懂block是什么意思,还搞不清楚怎么声明赋值调用的.老鸟请翻页.

block从本质上来讲就是一个函数,但是他带有变量的性质, 所以我们可以先这么写

{
  
NSLog(@"hello");

}

这样就是一个代码块了,但是为了凸显出他是block 所以加一个^标志表示他是block,而且这个时候就把block当做一个函数来看.所以就应该把其看做一个整体而不仅仅是一个代码块,所以后面就应该加一个;

^{

NSLog(@"hello");

};

这个其实就是一个省略返回值,省略参数的block声明. 当然返回值和参数都是void.然后这只是声明,然后当我们要使用他,只需要像使用一个函数一样加个();

(void)^(void){

NSLog(@"hello");

NSLog(@"world");

}();

这个时候控制台就会打印出hello 和world. 这个叫做"匿名无参无返回值block"

而这个时候,这个block就真的只是一个代码块,用完了就要没了,因为我们不可能在另外一个地方写个" ^(); "就要强势调用它,都说是匿名,我们就叫不出他的名字.这个时候就有一个有名字的block的出现啦!

void(^myBlock)(void);

这种就是block的声明了,而且还有名字,这个block的名字叫myBlock 紧接着我们就可以关联上面我们写的那段代码

void(^myBlock)(void);

myBlock = ^{           //或者myBlock = ^(void){

NSLog(@"hello");

NSLog(@"world");

};//注意这个时候已经没有()   因为你总不可能让block等于一个调用的方法吧, 

其实到这里,这一步骤就是我们平时对block赋值的常用方法. block就像一个变量一样 声明 赋值 调用同样的三个步骤. 所以不难想象 我们要使用myBlock只需要

myBlock();    //就像你在调用一个函数一样加个小括号

所以这个时候你就可以把block当做一个变量,用来当做函数的参数,返回值等等,这一篇就讲到这里了.

相关文章

  • block 从浅到深(一)

    block的语法 //这一篇是讲给完全搞不懂block是什么意思,还搞不清楚怎么声明赋值调用的.老鸟请翻页. bl...

  • block 从浅到深(二)

    关于各种变量在block中的作用域. //请先稍微大致浏览一下,早就懂的和老鸟请翻页. 先写了这么一段代码 ...

  • Day 2102:学习

    比较有感触的是从浅到深、慢就是快。 从浅到深 由于我是刚从互联网进入 To B 解决方案交付领域,而且还是之前完全...

  • 彩铅画学习,《忧郁》

    铅笔起稿,用彩铅从浅到深的叠色。

  • 水彩 蝴蝶

    先用自动铅画出轮廓,然后从浅到深依次上色。

  • 爱~永远

    你爱我 从过去到现在 从浅到深 从任性到理解 从固执到妥协 从强硬...

  • 从浅到深讲解python修饰器

    转载自https://www.cnblogs.com/wolf-yasen/p/11240500.html[htt...

  • 31 天,从浅到深轻松学习 Kotlin

    这篇文章介绍开发者用 31 天学习 Kotlin 的心得,深入浅出地介绍了 Kotlin 的一些基本特性以及高级用...

  • kotlin

    31 天,从浅到深轻松学习 Kotlin 在这篇文章中: [第一周](javascript:;) [第二周](ja...

  • Kotlin 31 Days

    Day1 可见性 参考 31 天,从浅到深轻松学习 KotlinKotlin实战 在 Kotlin 中一切都是默认...

网友评论

    本文标题:block 从浅到深(一)

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