block 常用于反向传值

声明

返回值类型 (^block)(参数列表)

调用

闭包的名字=^(参数列表){};

闭包的名字();

如:

void(^aaaaa)(int num,NSString *Sring);

aaaaa=^(int num,NSString *string){

NSLog(@"%d,%@",num,string);

};

aaaaa(120,@“www");

block实现反向传值

(1)用属性实现:

1.在.h文件声明:@property(nonatomic,copy)void(^block)(NSString * Nametexts);

2.在.m文件声明block的值:-(void)back:(UIButton *)sender{

self.block (sender.titleLabel.text);

[self dismissViewControllerAnimated:YES completion:nil];

}

3.在另一个ViewController.m中导入第一步的.h文件,之后:-(void)gonext{

nextViewController *next = [[nextViewController alloc]init];

next.block =^(NSString * Nametexts){

label.text =Nametexts;

};

[self presentViewController:next animated:YES completion:nil];

(2)用方法实现:1.在ViewController1.h 声明方

法:-(void)tou:(void(^)(NSString *message))block;

2.在ViewController1.m 调用这个方法:-(void)tou:(void(^)(NSString *message))block{

block(@"大黄牛");

}

3.在ViewController.m中导入ViewController1.h  之后在- (void)viewDidLoad 输入:ViewController1 *v1 = [[ViewController1 alloc]init];

[v1 tou:^(NSString *message) {

NSLog(@"%@",message);

}];

注意:1.修改Block外部变量的时候 需添加__block 修饰。

如:__block UIImage *image = nil;

imageNameBlock =^(NSString *imageName){

image = [UIImage imageNamed:imageName];

self.view.backgroundColor = [UIColor colorWithPatternImage:image];

};

imageNameBlock (@"头像.jpg");

2.声明的 block为 全局变量时

block会被循环引用 因此要用 __weak 弱引用

例: __weak ViewController *vis = self;

__block UIImage *image = nil;

imageNameBlock =^(NSString *imageName){

image = [UIImage imageNamed:imageName];

vis.view.backgroundColor = [UIColor colorWithPatternImage:image];

OC中 block 的用法的更多相关文章

  1. iOS中block的用法 以及和函数用法的区别

    ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候  MyBlock(); 带参数的 ...

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

    方式一.在传参时直接声明block回调方法. 1. 定义方法: - (int)doTest:(NSString *)name para1:(int)temp1 para2:(int)temp2 suc ...

  3. iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)

    1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...

  4. 最直接的教你OC中Block的简单使用场景

    场景一: A控制器跳转到B控制器   --   B控制器事件处理通过Block回调给A控制器 A 跳转前界面如下 点击ToB按钮到控制器B 在控制器B中点击按钮返回到A界面如下             ...

  5. oc 中随机数的用法(arc4random( ) 、random( )、CCRANDOM_0_1( )

    来源:http://www.cnblogs.com/jay-dong/archive/2012/07/23/2604916.html 1).arc4random() 比较精确不需要生成随即种子 使用方 ...

  6. swift中block的使用

    在OC中习惯用block来传值,而swift中,block被重新定义了一下,叫闭包: 使用的技巧:谁定义谁传值:   案例使用A.B控制器: 1~4步在B中执行,最后在A中执行: - B控制器: 1- ...

  7. OC中RAC编程block的基本使用

    在OC中block的基本使用 // // ViewController.h // RAC--test // // Created by Aaron on 17/1/17. // Copyright © ...

  8. objective-c 中随机数的用法 3种:arc4random() 、random()、CCRANDOM_0_1()

    oc 中随机数的用法(arc4random() .random().CCRANDOM_0_1() 1).arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() ...

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

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

随机推荐

  1. IOS知识小记

    iOS开发 小知识点 http://www.cnblogs.com/tangbinblog/archive/2012/07/20/2601324.html Objective-C中的instancet ...

  2. SQL 正则表达式使模式匹配和数据提取变得更容易

    SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易 David Banister 本文讨论: 使用正则表达式进行高效的 SQL 查询 SQL Server 2005 对正则表达式 ...

  3. 剑指OFFER之顺时针打印矩阵(九度OJ1391)

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...

  4. 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)

    从Spring框架流行后,几乎根本不用自己写解析配置文件的代码了,但近日一个基础项目(实在是太基础,不能用硕大繁琐的Spring), 碰到了用java.util.Properties读取中文内容(UT ...

  5. Foxmail

    我们在“POP3/SMTP服务”前面打钩,这样我们的QQ邮箱设置已经完成了,我们就可以在foxmail客户端上QQ邮箱了 QQ邮箱的POP3与SMTP服务器是什么? QQ邮箱 POP3 和 SMTP ...

  6. Android 编程下 java.lang.NoClassDefFoundError: cn.jpush.android.api.JPushInterface 报错

    使用了极光推送的 jar 包项目在从 SVN 中检出后,假设不又一次对 jar 包和 Bulid Path 进行配置就会抛出 java.lang.NoClassDefFoundError: cn.jp ...

  7. C#-获取datatable指定列的数据

    DataTable dt = new DataTable();            da.Fill(dt);                                    this.text ...

  8. nginx 调优

    般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 0 ...

  9. 获取设置dom属性

    getAttribute():获取dom节点属性,带一个参数,表示要获取的属性使用方法:object.getAttribute("id"); setAttribute():设置do ...

  10. 【转】字符串分割(C++)

    原文:http://www.cnblogs.com/MikeZhang/archive/2012/03/24/mysplitfuncpp.html 经常碰到字符串分割的问题,这里总结下,也方便我以后使 ...