文档章节

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
码字总数 20054
作品 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源码补完计划--AFNetworking 3.1.0源码研读

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

kirito_song
05/25
0
0
UIViewPropertyAnimator 简介(一)

目前在 UIKit 至少有三种创建动画的方法。iOS 4 之前的 begin/commit 方式,以及在 iOS 4 中引入的 block 方式。在 iOS 10 发布的时候,UIKit 新增了一个创建动画的专用类 UIViewPropertyAn...

智小融
07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【挑战剑指offer】系列03:逆序打印单链表

本系列的算法原题来自于“牛客网-剑指offer”,写这个板块,不仅仅是解决算法问题本身,更是手动提高难度、自行变式,思考更多的解决方案,以带给自己一些启发。 1. 【逆序打印单链表】原始题...

LinkedBear
36分钟前
2
0
Linux内存布局

今天这篇文章主要是我之前看Linux内核相关知识和博客Gustavo Duarte中。我主要是看了这篇博客,并且结合之前的知识,对内存管理的的理解又上升了一个档次。所以想通过这篇文章总结下。 我们先...

linuxprobe16
55分钟前
1
0
day94-20180921-英语流利阅读-待学习

记录死亡还是消费死者?自杀报道的媒体偏见 雪梨 2018-09-21 1.今日导读 自杀事件报道一直是新闻报道的重要部分,具有骇人听闻、吸引眼球的特点。可是在报道这些事件的时候,除了客观陈述事实...

飞鱼说编程
今天
4
0
如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
5
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部