OC中 block 的用法
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 的用法的更多相关文章
- iOS中block的用法 以及和函数用法的区别
ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候 MyBlock(); 带参数的 ...
- OC中block作方法参数时的用法
方式一.在传参时直接声明block回调方法. 1. 定义方法: - (int)doTest:(NSString *)name para1:(int)temp1 para2:(int)temp2 suc ...
- iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...
- 最直接的教你OC中Block的简单使用场景
场景一: A控制器跳转到B控制器 -- B控制器事件处理通过Block回调给A控制器 A 跳转前界面如下 点击ToB按钮到控制器B 在控制器B中点击按钮返回到A界面如下 ...
- oc 中随机数的用法(arc4random( ) 、random( )、CCRANDOM_0_1( )
来源:http://www.cnblogs.com/jay-dong/archive/2012/07/23/2604916.html 1).arc4random() 比较精确不需要生成随即种子 使用方 ...
- swift中block的使用
在OC中习惯用block来传值,而swift中,block被重新定义了一下,叫闭包: 使用的技巧:谁定义谁传值: 案例使用A.B控制器: 1~4步在B中执行,最后在A中执行: - B控制器: 1- ...
- OC中RAC编程block的基本使用
在OC中block的基本使用 // // ViewController.h // RAC--test // // Created by Aaron on 17/1/17. // Copyright © ...
- objective-c 中随机数的用法 3种:arc4random() 、random()、CCRANDOM_0_1()
oc 中随机数的用法(arc4random() .random().CCRANDOM_0_1() 1).arc4random() 比较精确不需要生成随即种子 使用方法 : 通过arc4random() ...
- Swift: 比较Swift中闭包传值、OC中的Block传值
一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...
随机推荐
- IOS知识小记
iOS开发 小知识点 http://www.cnblogs.com/tangbinblog/archive/2012/07/20/2601324.html Objective-C中的instancet ...
- SQL 正则表达式使模式匹配和数据提取变得更容易
SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易 David Banister 本文讨论: 使用正则表达式进行高效的 SQL 查询 SQL Server 2005 对正则表达式 ...
- 剑指OFFER之顺时针打印矩阵(九度OJ1391)
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...
- 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)
从Spring框架流行后,几乎根本不用自己写解析配置文件的代码了,但近日一个基础项目(实在是太基础,不能用硕大繁琐的Spring), 碰到了用java.util.Properties读取中文内容(UT ...
- Foxmail
我们在“POP3/SMTP服务”前面打钩,这样我们的QQ邮箱设置已经完成了,我们就可以在foxmail客户端上QQ邮箱了 QQ邮箱的POP3与SMTP服务器是什么? QQ邮箱 POP3 和 SMTP ...
- Android 编程下 java.lang.NoClassDefFoundError: cn.jpush.android.api.JPushInterface 报错
使用了极光推送的 jar 包项目在从 SVN 中检出后,假设不又一次对 jar 包和 Bulid Path 进行配置就会抛出 java.lang.NoClassDefFoundError: cn.jp ...
- C#-获取datatable指定列的数据
DataTable dt = new DataTable(); da.Fill(dt); this.text ...
- nginx 调优
般来说nginx配置文件中对优化比较有作用的为以下几项:worker_processes 8;1 nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 0 ...
- 获取设置dom属性
getAttribute():获取dom节点属性,带一个参数,表示要获取的属性使用方法:object.getAttribute("id"); setAttribute():设置do ...
- 【转】字符串分割(C++)
原文:http://www.cnblogs.com/MikeZhang/archive/2012/03/24/mysplitfuncpp.html 经常碰到字符串分割的问题,这里总结下,也方便我以后使 ...