Block 初试

转自 http://blog.csdn.net/itpeng523/article/details/24315541

刚刚进入ios开发行业,发现开发中要用到大量的block回调,由此可见它的重要性。学习它之前我也是网上找的资料,推荐这篇文章http://blog.csdn.net/mobanchengshuang/article/details/11751671,我也是从这里得到一点启发。如果对block的使用还不熟悉建议先看我的block那篇文章。下面我用自己的工程来解释一下block回调函数。

一、先创建一个简单的xcode工程

ViewController.h文件

//

//  ViewController.h

//  block回调

//

//  Created by pengxun523 on 14-4-16.

//  Copyright (c) 2014年 pengxun523. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIButton *btnOutlet;

- (IBAction)btnClick:(UIButton *)sender;

@end

#import "ViewController.h"

#import "ShowBtnColor.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

}

-(void)chargeMyIphone:(void(^)(void))finishBlock

{

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

- (IBAction)btnClick:(UIButton *)sender

{

CGRect temp = CGRectMake(_btnOutlet.frame.origin.x,_btnOutlet.frame.origin.y, _btnOutlet.frame.size.width+50,_btnOutlet.frame.size.height+20);

[ShowBtnColor ChangeRootViewBtnRect:tempblockcompletion:^(UIColor *colorEnum) {

/*函数回调 当block执行时就会回到这里*/

_btnOutlet.backgroundColor = colorEnum;

}];

}

@end

ShowBtnColor.h文件

//

//  ShowBtnColor.h

//  block回调

//

//  Created by pengxun523 on 14-4-22.

//  Copyright (c) 2014年 pengxun523. All rights reserved.

//

#import <Foundation/Foundation.h>

typedef void (^Changcolor)(UIColor *colorEnum); //定义一个block返回值void参数为颜色值

@interface ShowBtnColor : NSObject

//回调函数改变btn的颜色值

+ (void)ChangeRootViewBtnRect:(CGRect)rect blockcompletion:(Changcolor)Changcolorblock;

@end

//

//  ShowBtnColor.m

//  block回调

//

//  Created by pengxun523 on 14-4-22.

//  Copyright (c) 2014年 pengxun523. All rights reserved.

//

#import "ShowBtnColor.h"

@implementation ShowBtnColor

+ (void)ChangeRootViewBtnRect:(CGRect)rect blockcompletion:(Changcolor)Changcolorblock

{

UIColor *temp = [UIColor greenColor];

Changcolorblock(temp); //执行block

}

@end

运行结果

 当点击按钮时 

时间: 2024-08-27 13:55:54

Block 初试的相关文章

RSNAKE 的 Slowloris DOS攻击工具初试

Slowloris 号称低带宽对服务器进行DDOS攻击 原理就是对WEB服务器发送 不完整的包并且以 单一  \r\n结尾,并不是 完整的HTTP包.造成WEB服务器堵塞达到最大连接数. 官网给出介绍,对以下几种服务器有效: Apache 1.x Apache 2.x dhttpd GoAhead WebServer WebSense "block pages" (unconfirmed) Trapeze Wireless Web Portal (unconfirmed) Verizo

podman初试-和docker对比

podman初试-和docker对比 1,什么是docker? Docker 是一个开源的应用容器引擎,属于 Linux 容器的一种封装,Docker 提供简单易用的容器使用接口,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上.容器是完全使用沙箱机制,相互之间不会有任何接口. 2,什么是Podman? Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用.Podman 提供与 Docker 非常相似的功能.正如前面提到的

iOS block从零开始

iOS block从零开始 在iOS4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调. block的结构 先来一段简单的代码看看: void (^myBlock)(int a) = ^(int a){ NSLog(@"%zd",a); }; NSLog(@"旭宝爱吃鱼"); myBlock(999); 输出结果: 2016-05-03 11:27:18.571 block[5340:706252] 旭宝爱吃鱼

CUDA初试

1.基本概念 CUDA,全称是Compute Unified Device Architecture,意即统一计算架构,是NVIDIA推出的一种整合技术,开发者可以利用NVIDIA的GeForce 8 以后的GPU和较新的Quadro GPU进行计算. --维基百科 利用CUDA这个平台,可以方便地使用GPU来加速程序的数据运算.GPU对于深度学习这类领域非常重要,因为其具有强大的并行计算能力和浮点运算能力. CUDA的编程模型将CPU作为主机(Host),将GPU作为设备(Device),CP

嵌入式&amp;iOS:回调函数(C)与block(OC)传 参/函数 对比

C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call

iOS学习之代码块(Block)

代码块(Block) (1)主要作用:将一段代码保存起来,在需要的地方调用即可. (2)全局变量在代码块中的使用: 全局变量可以在代码块中使用,同时也可以被改变,代码片段如下: 1 int local = 1;//注意:全局变量 2 void (^block0)(void) = ^(void){ 3 local ++; 4 NSLog(@"local = %d",local); 5 }; 6 block0(); 7 NSLog(@"外部 local = %d",lo

Block内存管理实例分析

在ios开发中,相信说道block大家都不陌生,内存管理问题也是开发者最头疼的问题,网上很多讲block的博客,但大都是理论性多点,今天结合一些实例来讲解下. 存储域 首先和大家聊聊block的存储域,根据block在内存中的位置,block被分为三种类型: NSGlobalBlock NSStackBlock NSMallocBlock 从字面意思上大家也可以看出来 NSGlobalBlock是位于全局区的block,它是设置在程序的数据区域(.data区)中. NSStackBlock是位于

Block

OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 (2)利用block封装代码

Ubuntu Nginx uwsgi django 初试

/************************************************************************************** * Ubuntu Nginx uwsgi django 初试 * 说明: * 最近打算通过Python搭建一个数据收集的网站,先做一个搭建测试. * * 2016-8-5 深圳 南山平山村 曾剑锋 ***************************************************************