Block的整理

作者: 像小强一样活着 | 来源:发表于2016-02-24 14:52 被阅读239次

使用Block在两个界面之间传值

1. 在 B 控制器的.h文件中定义声明Block属性

typedef void (^MyBlock)(NSString *);

@interface BViewControl: UIViewController

@property (nonatomic, copy) MyBlock returnBlock;

@end

第一行代码是为要声明的Block重新定义了一个名字 MyBlock

这样,下面在使用的时候就会很方便。

第三行是定义的一个Block属性

2.  B控制器.m文件中

- (void)viewWillDisappear:(BOOL)animated {

if (self.MyBlock ) {

self.MyBlock(self.inputTF.text);

}

}

self.inputTF.text 是回传的字符串

3.在A控制器.m文件中

如下方法中书写:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

BViewControl *VC = segue.destinationViewController;

VC.returnBlock = ^(NString* string){

self.textLabel.text = string;

}];

}

可以看到代码中的注释,系统告诉我们可以用[segue destinationViewController]来获得B视图控制器。

4.BLock访问局部变量

{

int A = 8;

int (^Block)(int) = ^(int a){ return A + a;}; //block里面可以读取同一类型的outA的值

A = 5;  //在调用Ptr之前改变A的值

int result = Block(3);  // result的值仍然是11,并不是8

NSLog(@"result=%d", result);

为什么result 的值仍然是11?而不是8呢?事实上,myPtr在其主体中用到的outA这个变量值的时候做了一个copy的动作,把outA的值copy下来。所以,之后outA即使换成了新的值,对于myPtr里面copy的值是没有影响的。

需要注意的是,这里copy的值是变量的值,如果它是一个记忆体的位置(地址),换句话说,就是这个变量是个指针的话,

注意:

1.在某个变量前面如果加上修饰字“__block”的话(注意,block前面有两个下划线),这个变量就称作block variable

2.直接存取static类型的变量

3.那么在block里面就可以任意修改此变量的值

3.把Block 当成参数传递给一个函数

//function的定义,将Block作为参数

-void myFunction:(int (^mySquare)(int))myFunction;   

//定义一个myBlock的Block 变量

int (^myBlock)(int) = ^(int a){

return a*a;

}; 

myFunction(myBlock);    //把mySquare作为myFunction的参数

相关文章

  • block的整理

    先看看第一道题: Example A This example always works. only works ...

  • Block的整理

    使用Block在两个界面之间传值 1. 在 B 控制器的.h文件中定义声明Block属性 typedef void...

  • Block整理

    Block 概念 闭包 = 一个函数「或指向函数的指针」+ 该函数执行的外部的上下文变量「也就是自由变量」;Blo...

  • 整理Block

    用了Block那么久,一直以来没有好好整理,只知道如何使用,对有些概念也不是了解特别清楚,感觉似懂非懂的。借助网上...

  • Block整理

    Block block其实就是一个代码块,把你想要执行的代码封装在这个代码块里,等到需要的时候再去调用。那bloc...

  • block-整理中

    block-整理中

  • 2018.07.01

    看不进去书的时候就整理房间 一个block 一个block 的整理 从书架开始

  • Block知识整理

    2018-10-26 编辑 :yzl 1. block定义 用Apple文档的话来说,A block is an...

  • Block常用整理

    善用block,可以进行很好的封装,但总是容易混,所以整理一下~ 独立block格式: typedef 返回值类型...

  • 深入理解Objective-C的Block

    对Block的内存使用相关的内容简要整理,解释其中的道理和使用Block需要注意的问题。 1. Block与对...

网友评论

  • 煜寒了:代码可以用格式编辑一下
    煜寒了:看下简书关于markdown的语法,很简单的:smile:
    像小强一样活着:@煜寒了 都是在简书上直接写的 也是刚用这个 怎么编辑呢?

本文标题:Block的整理

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