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中叫闭包 ...
随机推荐
- unigui下载文件
lblProduct.Caption := '<a href="files\1.t" target=new>要下载的文件名</a>';
- oscgit
Gitlab PaaS项目演示 git config --global user.name "你的名字或昵称" git config --global user.email &qu ...
- angular中的promise
angular中的promise用法 标签(空格分隔): angular 前言 Promise其实是一个规范,用类似then().then()这样的链式调用形式来处理因为异步带来意大利面条式的代码(多 ...
- 【数据结构】非常有用的hash表
这篇博客的目的是让尚未学会hash表的朋友们对hash表有一个直观的理解,并且能根据本文定义出属于自己的第一个hash表,但算不上研究文,没有深究概念和成功案例. 什么是has ...
- 【IOS界面布局】横竖屏切换和控件自适应(推荐)
[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...
- 将某个组中的账户移动到新的OU下
将某个组中的账户移动到新的OU下 #定义组名 $groupname = "testg" #定义新的OU名称 $newou = "OU=oo,OU=Admins,dc=dd ...
- 眼下最好的JSP分页技术
2005-08-24 来源:CSDN 作者:wanchao2001 前言 在使用数据库的过程中,不可避免的须要使用到分页的功能,但是JDBC的规范对此却没有非常好的解决.对于这个需求非 ...
- Nginx+tomcat 做负载均衡
架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomcat) 优点:实现了可弹性化的架构,在压力 ...
- 在CentOS上编译安装PostgreSQL
http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...
- 文件I/O(不带缓冲)之creat函数
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 也可调用creat函数创建一个新文件. #in ...