一、block延伸:页面间反向传值

1)first页面的代码

- (void)viewDidLoad {
[super viewDidLoad];
[self setupBtn];
self.view.backgroundColor = [UIColor whiteColor]; }
- (void)setupBtn
{
UIButton * btn = [[UIButton alloc]init];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor = [UIColor blackColor];
btn.frame = CGRectMake(, , , );
[self.view addSubview:btn];
}
- (void)buttonClick
{
SecondViewController * secondVC = [[SecondViewController alloc]init];
//在first页面调用block输出字符串
secondVC.myBlock= ^(NSString * str){
NSLog(@"%@",str);
};
[self.navigationController pushViewController:secondVC animated:YES];
}

2)second页面的代码

//.h文件
#import <UIKit/UIKit.h> @interface SecondViewController : UIViewController
//定义block
@property (nonatomic,copy)void (^myBlock)(NSString * str);
@end
//.m文件
- (void)setupBtn
{
UIButton * btn = [[UIButton alloc]init];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor = [UIColor blackColor];
btn.frame = CGRectMake(, , , );
[self.view addSubview:btn];
}
- (void)buttonClick
{
//通过block传值
if (self.myBlock) {
self.myBlock(@"haha");
}
[self.navigationController popToRootViewControllerAnimated:YES];
}

输出结果:

-- ::55.168 -block[:] haha

参考博客:http://my.oschina.net/leejan97/blog/268536?fromerr=2UdIND3G

关于OC中的block自己的一些理解(二)的更多相关文章

  1. 关于OC中的block自己的一些理解(一)

    一.关于block 1.block的作用:保存一段代码. 2.苹果官方推荐的一种语法,类似于C语言的函数,但是比函数更加灵活. 3.^是block语法的标识. 二.block的用法 1)无返回值无参数 ...

  2. Swift: 比较Swift中闭包传值、OC中的Block传值

    一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...

  3. OC 中的block使用

    在iOS的开发过程中,使用块的地方很多也很方便,但是在使用块的过程中要注意内存泄露的问题. 在块创建的时候,会对块内的所有对象的引用计数加一,直到块销毁,所以在使用块的过程中需要我们进行处理,在这里以 ...

  4. OC 中的block存储位置

    以下所有在ARC情况下: 一.block块的存储位置(block块入口地址):可能存放在2个地方:代码区.堆区(程序分5个区,还有常量区.全局区和栈区,对于MRC情况下代码还可能存在栈区.关于分区详细 ...

  5. OC中的Block的那些事

    Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.在多线程.异步任务.集合遍历.集合排序.动 ...

  6. oc中的block使用心得

    typedef void (^ simpleBlock) (void); typedef double (^multiplyTwoValues)(double, double); typedef vo ...

  7. oc中的block

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  8. Swift 闭包即OC中的Block

    - 闭包的定义 1.提前准备好的代码        2.在需要的时候执行        3.可以当做参数传递 // 1.最简单的闭包 // () -> () 没有参数,没有返回值的函数 // 如 ...

  9. OC中的block作方法参数时的用法

    方式一.在传参时直接声明block回调方法. 1. 定义方法: - (int)doTest:(NSString *)name success:(int (^)(int param1, int para ...

随机推荐

  1. leetcode BFS解题思路

    Word Ladder 思路一:单向bfs, 使用visited数组记录哪些已经访问过了, 访问过的就不允许再次入队, 同时这里想到的是使用26个英文字母,枚举可能的取值, 类似brute force ...

  2. pkg-config的妙用

    1.每个lib下都会有个pkg-config文件夹,里面有相应pc文件 修改里面内容可以改变pkg-config显示 2.将.pc文件所在路径添加到PKG_CONFIG_PATH中如: export ...

  3. AM使用指南:如何在Managed Bean中获取AM实例?

    AM是放置服务方法的地方,有时我们需要在Managed Bean中调用这些方法.要调用这些方法,首先要在Managed Bean中获取AM实例.这里要用到<ADF工具类:ADFUtil.java ...

  4. Qt webkitwidgets模块和webenginewidgets模块

    问题 将Qt开发的程序从Qt5.5或更低的版本迁移到5.6或更高的版本时,会提示webkitwidgets是unknown module. Project ERROR: Unknown module( ...

  5. Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)

    实现 instance 定制化,cloud-init(或 cloudbase-init)只是故事的一半,metadata service 则是故事的的另一半.两者的分工是:metadata servi ...

  6. 38 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

    题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度. public class _038PrintLength { public static void main(Stri ...

  7. css3系列之animation

    在上次博文中已经讲了transition,其实animation与transition功能相同,都是通过改变元素 的属性来实现动画效果的.但是它们也有区别:transition是只能通过改变指定属性的 ...

  8. Ubuntu建立WIFI热点

    网络共享 http://www.linuxidc.com/Linux/2014-07/104624.htm

  9. 常见的MIME

    "css": "text/css", "gif": "image/gif", "html": &qu ...

  10. 团体程序设计天梯赛L2-002 链表去重 2017-03-22 18:12 25人阅读 评论(0) 收藏

    L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除 ...