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中叫闭包 ...
随机推荐
- mssql存储过程demo
ALTER PROCEDURE [dbo].[sp_get_saleData]ASBEGIN set nocount on -- 获取最近上传数据的时间戳 declare @dd datetime s ...
- delete table 和 truncate table
delete table 和 truncate table 使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where< ...
- 使用Knoctout.分页
要点:点击标签翻页部分时,pageValue自动加1. 1.api中的方法 public ArticleListModel Get(int page,string _class) { var list ...
- Rank of Tetris(hdu1811拓扑排序+并查集)
题意:关于Rating的信息.这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rati ...
- Webx学习(一)
什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架. Webx致力于提供一套极具扩展性的机制.来满足Web应用不断变化 ...
- yarn的基本组成和工作流程
yarn是负责资源管理的,协调各个应用程序的资源使用情况 一.基本组成 yarn主要由以下几个部分组成 1.resourcemanager 主要负责资源的调度和应用程序的管理 (1)调度器 调度器是将 ...
- Struts2 中的数据传输
1. 如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有gette ...
- Jordan Lecture Note-5: Kernels
Kernels 我们首先来回顾kernel函数的定义:一个函数$K(x,y)$为kernel函数当且仅当对$\forall g, \int K(x,y)g(x)g(y)dxdy\geq 0$成立.另外 ...
- mac中vmware tools进行磁盘压缩和vmware-tools-cli的使用方法
前言: 高高兴兴的在vmware9.0中安装了mac10.8系统,然后学习iphone开发,但是发现下载的pdf都是基于xcode3.2.5的,又在10.8上面安装3.2.5,出现“五国”无法解决,最 ...
- python--while循环
1.最简单的while True循环 count = while True : : print('hello',count) break count += hello 2.利用while循环写一个猜年 ...