文档章节

iOS开发block篇---block传值

琳小兮
 琳小兮
发布于 2015/02/27 14:44
字数 536
阅读 90
收藏 0
 //int a 就是参数列, return a*a; 就是行为主体,后面的小括号里面的5会被当成a的输入值
    int result = ^(int a){return a*a;}(5);
    NSLog(@"---result...%d",result);
    
    //声明一个iBlock的Block指针,其所指向的Block有一个int类型得返回值和int类型得参数
    int(^iBlock)(int);
    //将Block实体指定给iBlock
    iBlock = ^(int a){ return a+2;};
    //调用
    int bb = iBlock(10);
    NSLog(@"----bb....%d",bb);
    
    //cBlock在其主体中用到的outA这个常量值的时候做了一个copy的动作,把c的值copy下来。所以,之后c即使换成了新的值,对于cBlock里面copy的值是没有影响的.如果是static类型的常量就可以直接在block里面修改c的值
    static int c = 5;
    int (^cBlock)(int) = ^(int ccc){c = 8;return ccc*c;};
    NSLog(@"---c...%d",cBlock(2));
    
    //如果是指针类型,可以直接在block里面修改
    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"one",@"two",@"three", nil];
    //直接赋值a为2
    int aarrr = ^(int a){[arr removeLastObject];  return a*a;}(2);
    NSLog(@"--aarrr...%d---arr...%@",aarrr,arr);
    
    //在某个变量前面如果加上修饰字“__block"(注意是两个下划线)的话,也可以直接在block里面修改此变量的值
    __block int v = 0;
    //调用vBlock赋值a为2
    int (^vBlock)(int) = ^(int a){ v = 3; return a*v;};
    NSLog(@"---abc...%d",vBlock(2));
  //下面记录一下block得传值,a页面push到BTPushViewController页面,BTPushViewController页面pop回a页面得时候将值传给a页面
    //在BTPushViewController页面.h中声明一个块
typedef void (^myBlock)(int);
    //定义当前块的属性和方法
@property (nonatomic,assign)myBlock senBlock;
-(void)returnBlock:(myBlock)senderBlocks;

    //BTPushViewController页面得.m中
-(void)returnBlock:(myBlock)senderBlocks
{
    self.senBlock = senderBlocks;
}

 //返回按钮
- (void)navLeftBtnAction:(UIButton *)btn
{
    //用block进行传值
    if (self.senBlock) {
        self.senBlock(15);
    }
    [self.navigationController popViewControllerAnimated:YES];
}

//在a页面push到BTPushViewController页面得跳转方法里面这样写
-(void)doButton
{
    BTPushViewController *pushs = [[BTPushViewController alloc] init];

    pushs.senBlock = ^(int a)
    {
        NSLog(@"--------block传值%d",a);
    };
    
    [self.navigationController pushViewController:pushs animated:YES];
}


© 著作权归作者所有

共有 人打赏支持
琳小兮
粉丝 30
博文 37
码字总数 20169
作品 0
襄阳
程序员
私信 提问
IOS 浅谈闭包block的使用

前言:对于ios初学者,block通常用于逆向传值,遍历等,会使用,但是可能心虚,会感觉block很神秘,那么下面就一起来揭开它的面纱吧。 ps: 下面重点讲叙了闭包的概念,常用的语法,以及访问变...

周雨奇
07/23
0
0
iOS查看屏幕帧数工具--YYFPSLabel

学习 YYKit 代码时,发现 ibireme 在项目里加入的一个查看当前屏幕帧数的小工具,效果如下: 挺实用,实现方法也很简单,但是思路特别棒。 这里是Demo: YYFPSLabel 这里我把这个小工具从 中...

yehot
2016/04/05
0
0
iOS精美过度动画、视频会议、朋友圈、联系人检索、自定义聊天界面等源码

iOS精选源码 iOS 精美过度动画源码(http://www.code4app.com/thread-14827-1-1.html) iOS简易聊天页面以及容联云IM自定义聊天页面的实现思路(http://www.code4app.com/thread-30348-1-1.htm...

sunnyaigd
07/11
0
0
iOS 开发之一些著名开发者博客

国内 王巍 王巍目前在日本横滨任职于 LINE。工作内容主要进行 Unity3D 开发,8小时之外经常进行 iOS/Mac 开发。他的陈列柜中已有多款应用,其中番茄工作法工具非常棒。 博客 池建强 池建强,...

maskmale
02/25
0
0
iOS源码补完计划--AFNetworking 3.1.0源码研读

参拜一下AFNetworking的源码。 第四篇源码、暂时来看也是iOS方向的最后一篇、撸完准备趁着热乎撸一撸网络协议。 目录 准备工作 功能模块 AFURLSessionManager/AFHTTPSessionManager AFNetwo...

kirito_song
05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Maven 依赖范围(Dependency Scope)

Dependency Scope Dependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for various build tasks. 依赖范围用于限制依赖项的传递性......

晨猫
24分钟前
1
0
细述hbase协处理器

1.起因(Why HBase Coprocessor) HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在旧版本的(<0.92)Hbase中,统计数据表的...

微笑向暖wx
37分钟前
1
0
【实践】如何获得Rinkeby网络的测试以太币

当把智能合约部署到Rinkeby Test Network时,需要获得测试以太币。其网络获取测试以太币的方法同Ropsten Test Network有些不同,本文详细讲解一下。 1 访问网站 访问rinkeby网络(https://w...

HiBlock
58分钟前
1
0
Logback中如何自定义灵活的日志过滤规则

当我们需要对日志的打印要做一些范围的控制的时候,通常都是通过为各个Appender设置不同的Filter配置来实现。在Logback中自带了两个过滤器实现:ch.qos.logback.classic.filter.LevelFilter...

程序猿DD
今天
3
0
ES6中let 和 const 的新特性

在javascript中,我们都知道使用var来声明变量。javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量。 ECMAScript 6 是 JavaScript 语言教程,全面介绍 EC...

peakedness丶
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部