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. mssql存储过程demo

    ALTER PROCEDURE [dbo].[sp_get_saleData]ASBEGIN set nocount on -- 获取最近上传数据的时间戳 declare @dd datetime s ...

  2. delete table 和 truncate table

    delete table 和 truncate table 使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where< ...

  3. 使用Knoctout.分页

    要点:点击标签翻页部分时,pageValue自动加1. 1.api中的方法 public ArticleListModel Get(int page,string _class) { var list ...

  4. Rank of Tetris(hdu1811拓扑排序+并查集)

    题意:关于Rating的信息.这些信息可能有三种情况,分别是"A > B","A = B","A < B",分别表示A的Rati ...

  5. Webx学习(一)

    什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架. Webx致力于提供一套极具扩展性的机制.来满足Web应用不断变化 ...

  6. yarn的基本组成和工作流程

    yarn是负责资源管理的,协调各个应用程序的资源使用情况 一.基本组成 yarn主要由以下几个部分组成 1.resourcemanager 主要负责资源的调度和应用程序的管理 (1)调度器 调度器是将 ...

  7. Struts2 中的数据传输

    1.     如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有gette ...

  8. Jordan Lecture Note-5: Kernels

    Kernels 我们首先来回顾kernel函数的定义:一个函数$K(x,y)$为kernel函数当且仅当对$\forall g, \int K(x,y)g(x)g(y)dxdy\geq 0$成立.另外 ...

  9. mac中vmware tools进行磁盘压缩和vmware-tools-cli的使用方法

    前言: 高高兴兴的在vmware9.0中安装了mac10.8系统,然后学习iphone开发,但是发现下载的pdf都是基于xcode3.2.5的,又在10.8上面安装3.2.5,出现“五国”无法解决,最 ...

  10. python--while循环

    1.最简单的while True循环 count = while True : : print('hello',count) break count += hello 2.利用while循环写一个猜年 ...