typedef void(^DemoBlock)();
typedef void(^INTBlock)(int a, int b); @property(nonatomic,assign)DemoBlock demoBlock;
@property(nonatomic,assign)INTBlock initBlock; -(void)creatdemoBlock:(DemoBlock)demoBlock InitBlock:(INTBlock)initBlock{
demoBlock();
initBlock(10,20);
} [self creatdemoBlock:^{ NSLog(@"hehehe"); }InitBlock:^(int a, int b) {
NSLog(@"%d",a+b);//30
}];

  

   int (^Myblock)(int,int) = ^(int a , int b){
return a+b;
}; int(^Myblock2)() = ^(){
return 10;
}; int (^Myblock3)() =^{
return 20;
}; NSLog(@"%d",Myblock(10,20));//30
NSLog(@"%d",Myblock2());//10
NSLog(@"%d",Myblock3());//20
    self.memberVariable = ;
// NSInteger outsideVariable = 20;//如果不添加_block则block会捕获该值
//添加了_block则会跳过获取后面的值,如果没有则显示此值。
__block NSInteger outsideVariable = ;
NSMutableArray * outsideArray = [[NSMutableArray alloc] init]; void (^blockObject)(void) = ^(void){
NSInteger insideVariable = ;//不会变
NSLog(@" > member variable = %ld", (long)self.memberVariable);//
NSLog(@" > outside variable = %ld", (long)outsideVariable);//有_block:30?20
NSLog(@" > inside variable = %ld", (long)insideVariable);//
[outsideArray addObject:@"AddedInsideBlock"];
}; outsideVariable = ;
self.memberVariable = ; blockObject(); NSLog(@" > %lu items in outsideArray", (unsigned long)[outsideArray count]);

1、在需要回调的B界面:.h

//1、定义一个Block 返回字符串
typedef void(^ReturnTextStr)(NSString*str);
//2、声明一个Block
@property(nonatomic,strong)ReturnTextStr returnStrBlock;
//3、声明一个Block方法
-(void)returenText:(ReturnTextStr)block;

2、在需要回调B界面: .m

//4、
-(void)returenText:(ReturnTextStr)block{
_returnStrBlock = block;
} //5、
- (IBAction)back:(id)sender {
[self dismissViewControllerAnimated:YES completion:^{ if (_returnStrBlock != nil ) {
_returnStrBlock(self.blockTEXT.text);
} }]; }

3、接收返回值得A界面

@interface ViewController (){
BVCViewController*bvc;
} - (IBAction)gotoVC:(id)sender { bvc = [[CViewController alloc]initWithNibName:@"CViewController" bundle:nil]; // 5
[bvc returenText:^(NSString *str) {
self.A.text = str;
}]; [self presentViewController:bvc animated:YES completion:nil]; }

Block传值的更多相关文章

  1. 界面通信之block传值

    block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传 ...

  2. 属性传值,协议传值,block传值,单例传值四种界面传值方式

    一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...

  3. iOS Block传值

    上个月,针对block恶补了一下,以为自己全部掌握了,其实不尽然. 昨天项目中在下载的时候用到,自己竟然不知道该从何下手,惭愧~ 情景是这个样子的:我写了个下载类,阴老师在调用时,将参数(sid,UR ...

  4. 代理和 block 传值的使用

    // // ZYViewController.h // BlockTest // // Created by yejiong on 14/11/2. // Copyright © 2014年 zzz. ...

  5. iOS 页面间传值 之 单例传值 , block 传值

    ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...

  6. iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

    iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...

  7. 浅谈Block传值-匿名函数(代码块)

    block传值是从后往前传值---代理也是 // 使用block时, 不能访问self, 也不能直接访问属性, self.属性, 用self调用方法; 只要这样做了, block都会对其强引用一份, ...

  8. OS笔记047代理传值和block传值

    在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...

  9. iOS开发——代理与block传值

    一.代理传值的方法 1.Hehe1ViewController.h中 #import <UIKit/UIKit.h> @protocol Hehe1ViewControllerDelega ...

  10. Block高级用法:Block传值UI_12(3)

    1.简单复习Block的定义.赋值.调用做学习传值铺垫: //声明一个函数 无返无参void printfHello(int a);//函数的实现void printfHello(int a){    ...

随机推荐

  1. 2008server安装Intel I217V网卡驱动

    问题:由于在职的是小公司,公司服务器都是DIY的,拒绝采购品牌服务器,所以配件都是自己DIY的,这样就会出现很多兼容性问题,例如服务器主板是AUS B85-PRO-Gamer,装的是服务器系统wind ...

  2. NHibernate系列文章三:简单的增删改查询

    摘要 上一篇文章只完成了简单的NHibernate安装.配置和连接数据库.这篇文章介绍怎样实现最简单的数据库读写操作. 1. 重构ISessionFactory生成过程 将生成ISessionFact ...

  3. 关于Android开发手机连接不上电脑问题解决方案

    1.当然首先你得将手机里的usb debug选项选上,否则lsusb是不会有你的设备的2. lsusb 查看usb设备id3. sudo vim /etc/udev/rules.d/51-androi ...

  4. JS中的for/in语句和arguments参数

    在js应用中,有时候我们会遇到希望定义一个函数可以被不同情况调用,比如参数个数不固定的情况. 可以使用for/in语句和arguments参数解决. 举个简单例子:定义一个计算总和的函数,需要计算的数 ...

  5. JavaWEB域对象

    PageContext: ServletRequest: HttpSession: ServletContext: void setAttribute(String name, Object valu ...

  6. linux 驱动学习笔记02--应用实例:在内核中新增驱动代码目录和子目录

    下面来看一个综合实例,假设我们要在内核源代码 drivers 目录下为 ARM 体系结构新增如下用于 test driver 的树型目录:| --test  | -- cpu  | -- cpu.c ...

  7. cursor

    BeginWaitCursor(); // display the hourglass cursor // do some lengthy processing Sleep(3000); EndWai ...

  8. Redis 的Lua Script脚本功能

    从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值 Redis2.6内置的Lua Script支持,可以在Redis的Server端一次 ...

  9. nginx环境下配置nagios-关于commands.cfg

    -w $ARG1$ -c $ARG2$ -M -b% -c % -f% -c % -f% -c % -f #  define command{         command_name    chec ...

  10. 深入理解js——prototype原型

    之前(深入理解js--一切皆是对象)中说道,函数也是一种对象.它也是属性的集合,你也可以对函数进行自定义属性.而JavaScript默认的给了函数一个属性--prototype(原型).每个函数都有一 ...