文档章节

iOS开发block篇---block传值

琳小兮
 琳小兮
发布于 2015/02/27 14:44
字数 536
阅读 91
收藏 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
博文 66
码字总数 31201
作品 0
襄阳
程序员
私信 提问
加载中

评论(0)

2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
根据Coding的iOS端重新用RAC封装网络请求

好久没写博客了。我的博客地址。之前一直在研究MVVM这种新的开发模式。也算是沉淀了一段时间,国庆期间可能还会写写MVVM。今天要聊的是创萌工作室的iOS客户端网络请求的封装。因为很多原因封...

testHs
2019/09/29
0
0
移动端开发ios和安卓兼容问题

移动端开发ios和安卓兼容问题 最近做移动端混合开的时候遇到一些安卓和iOS的兼容性问题,兼容想问题不仅在浏览器存在也在APP开发当中也会经常遇到这样的情况。 最近看了一下内容很不错的移动...

osc_42ssirsd
2019/03/08
8
0
IOS 浅谈闭包block的使用

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

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

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

yehot
2016/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

程序远自我修养

详见: https://leohxj.gitbooks.io/a-programmer-prepares/content/pm/good-product-manager.html

郭恩洲_OSC博客
53分钟前
15
0
使用git clone命令克隆文件出现error: RPC failed相关错误

使用git clone命令克隆文件出现error: RPC failed; curl 18 transfer closed with outstanding read data remain问题 笔者最近在使用git clone命令从github克隆源码到电脑时出现了以下问题 ...

独钓渔
今天
22
0
Java中JNI的使用详解第三篇:JNIEnv类型中方法的使用

在来看一下C++代码: #include<iostream.h> #include "com_jni_demo_JNIDemo.h" JNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHello (JNIEnv * env, jobject obj) { //获取obj中对象......

天王盖地虎626
今天
21
0
直播撬动618变局:抖快凶猛、商家清醒

  文/鸿键   来源:深响(ID:deep-echo)   核心要点   直播带货热潮持续升温,今年的传统电商大促节 618 成了第一个“全民直播”的 618,直播带货不仅为电商带来增量,同时也搅动着行...

计算无敌
今天
30
0
《一天一模式》— 观察者模式

一、观察者模式的概念 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题...

XuePeng77
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部