第一节 block基础知识学习

作者: 柳声 | 来源:发表于2016-08-05 11:55 被阅读242次
Dear All 这次我们来学习block知识 ,废话不说 、让我们直奔主题

block也是一个指针,保存的是一段代码块在内存中的空间 (栈内存)
下面声明一个最简单的block:

/*
 void 返回值 表示调用这一段代码会返回什么数据
 (^block1) block1表示代码块的名(指针名),但是需要在指针名前添加"^"
 (void) 参数,里面跟的是参数类型和参数名,如果有多个参数 都写在()中,但是需要用","分割
 */

void(^block1) (void) = NULL;

/*
^(void)表示的是block的参数,需要把block声明时的参数写过来
然后在"("之前添加"^",")"后添加一对"{}",
该大括号的内容就是该block的代码块内容
*/
block1 = ^(void) {
      NSLog(@"-------");
};
block1();

无返回参数 和 有返回参数 的block使用

//无返回参数
void (^block2) (int a, int b) = ^(int a, int b) {
    NSLog(@"------>%d", a + b);
};
block2(5, 6);

//返回类型为int
int (^block3) (int a, int b) = ^(int a, int b) {
    return a + b;
};
NSLog(@"===>%d", block3(1, 2));

//再看下参数为 NSString 类型的
void (^bloak7) (NSString *text) = ^(NSString *text) {
    NSLog(@"hello world! %@", text);
};
bloak7(@"小明");

NSString * (^block8) ( NSString *) = ^( NSString * text) {
    return text;
};
NSLog(@"%@", block8(@"测试"));

以上的使用block都是表示某个类型的指针,使用场景多为某个方法当中,那我我们如何能将block作为一个参数传递呢 ?,接下来我们就把block定义为某一类型的指针函数。举例如下

//下面的这三种Block 就不再表示某个指针,而是表示某一类型的指针 。例如 我可以用Block1来声明 无参无返回的block指针

#import "ViewController.h"
typedef void (^Block4) (void);
typedef void (^Block5) (int a, int b);
typedef int  (^Block6) (int a, int b);

再我们用关键字 typedef 定义了Block 类型后,接下来的使用就舒服多了,举例如下

Block1 block4 = ^(void) {
    NSLog(@"block4....");
};
block4();

Block2 block5 = ^(int m, int n) {
    NSLog(@"---==%d", m + n);
};
block5(10, 12);

Block3 block6 = ^(int a, int b) {
    return a + b;
};
int n = block6(10, 1);
NSLog(@"%d", n);

是不是顿时觉着使用起来舒服多了,哈哈这仅仅是个开始,接下来的章节我们将一起学习block 更精妙的部分 Learning together is Better
[第二节 block知识学习(copy,__weak,__block)]
http://www.jianshu.com/p/75f2d854e869

相关文章

  • 第一节 block基础知识学习

    Dear All 这次我们来学习block知识 ,废话不说 、让我们直奔主题 block也是一个指针,保存的是一段...

  • Block相关(二)

    前言,在上篇文章Block相关(一),中介绍了Block相关的基础知识,包括Block介绍、基础语法、使用情况等。...

  • (iOS) Objective-C

    基础知识 nonatomic atomic strong copy weak & assign Block 进阶知...

  • 37-理解block

    37-理解“block” block的基础知识 block与函数类似,只不过是直接定义在另一个函数里的,和定义它的...

  • iOS图形图像及核心动画实战三GCD基础知识

    本教程是一个合集,涉及到的目录结构:基础知识总结Block基础知识GCD实战CoreGraphics & Imag...

  • iOS图形图像及核心动画实战二Block基础知识

    本教程是一个合集,涉及到的目录结构:基础知识总结Block基础知识GCD实战CoreGraphics & Imag...

  • Block

    block的基础知识 block修饰是用strong还是copy 对于现在而言,这两种都可以了,因为在ARC的模式...

  • 托XX福写个Swift闭包教程

    闭包基础知识 Swift闭包和OC的block类似不过还是有点区别 OC的block是一个匿名函数 Swift 中...

  • Web页面制作基础

    Web页面制作基础 说明:仅作为学习辅助 那么Web页面制作基础,能让你掌握什么呢? 第一节掌握Web基础知识。 ...

  • Web页面制作基础

    Web页面制作基础 说明:仅作为学习辅助 那么Web页面制作基础,能让你掌握什么呢? 第一节掌握Web基础知识。 ...

网友评论

    本文标题:第一节 block基础知识学习

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