block使用

1.block相关的一些基本

在类中定义一个block变量,就像定义一个函数,可以定义在方法的内部,也可以定义在方法的外部。只有调用block的时候,才会执行block块中的方法,而且在block的方法体内。是不可以对外面的变量进行修改的。但是用__block定义的变量是可以在方法体内修改的。

定义返回值类型为NSInteger,方法名为IntBlock的代码块:

NSInteger currentNum = 9;

NSInteger (^IntBlock)(NSInteger) = ^(NSInteger num){

return num*currentNum;

};

NSInteger  newNum = IntBlock(7);

定义可以修改变量的block:

__block NSInteger m = 50;//添加__block的定义,就可以在block的方法体内,修改变量m;如果不加__block的话,Xcode会提示m变量错误信息:Variable is not assing(missing __block type)

void(^sumMNBlock)(NSInteger) = ^(NSInteger n){

m = m + n;

NSLog(@"m和n的和为:%ld",x);

}

sumMNBlock(50);

2.定义在方法外部

在ViewDidLoad方法外部,定义一个参数,没有返回值的block

void(^ NoNumBlock)(NSInteger) = ^(NSInteger num){

NSLog(@"整数值为: %ld",num);

}

3.利用block实现两个页面之间的传值

以单个字符串为例,其他情况只需要改变参数类型即可:

传递值页面:ChuanzhiViewController

在.m文件中:定义block块

@property(nonatomic,copy)void(chuanzhiViewControllerBlock)(NSString *valueString);

在.h文件中:传值方法

if (self.nextViewControllerBlock) {

self.nextViewControllerBlock(valueString);

}

接收值页面:JieshouViewController

在页面跳转的时候:

JieshouViewController *VC = [JieshouViewController new];

VC.nextViewControllerBlock = ^(NSString *valueString){

NSLog(@"%@",valueString);

};

[self.navigationController pushViewController:VC animated:YES];

补充:快速敲block:inline——>回车

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • #C语言内存分配 Objective-C从名字来看就可以知道是一门超C语言,所以了解C语言的内存模型对于理解Obj...
    吾是小马哥阅读 1,439评论 0 10
  • block使用 第一部分 定义和使用Block, 定义在-viewDidLoad方法外部 定义Block变量,就相...
    levinYuXiao阅读 7,863评论 2 22
  • 本文将浅分析几个Block使用问题: 解析问题一:Block作为类变量属性时为啥用copy修饰?堆栈存储位置是怎样...
    DonnyDD阅读 1,974评论 0 7
  • iOS Block的使用一 .最简单的block使用******使用block的三个步骤:1.定义block变量 ...
    王小宾阅读 3,137评论 1 14
  • 远古的时候,天上曾有十个太阳,晒得大地冒烟,海水干枯,老百姓苦得活不下去。 有个叫羿的英雄力大无比,他用宝弓神箭,...
    6d670ab849e4阅读 386评论 0 0