【Objective-C学习-8】Block
来源:互联网 发布:双肩女背包 知乎 编辑:程序博客网 时间:2024/06/05 02:39
学习Block之前,我们先了解下匿名函数和闭包性的概念。
匿名函数实际上是一个没有名字或者标示的函数,匿名函数只有内容,我们可以将其存储在一个变量中,或者将其当做一个参数传递给另一个函数使用。
闭包性是允许一个函数访问其所声明上下文中的变量,甚至是在不同的运行上下文中。
Block的定义:
int (^SumBlock) (int, int) = ^(int a, int b) {return a + b;}
该语句定义了一个叫Sum的Block对象,它带有两个int参数,返回int类型,等号右边是Block的具体实现。
还可以用typedef来定义Block的别名:
typedef int (^SumBlock) (int, int) IntSum;
定义一个Block变量:
IntSum intSum = ^(int a, int b) {return a + b;}
Block的闭包性:
void test() {//Block可以访问局部变量,但默认情况下不能修改int c = 20;//使用__block修饰的局部变量,可以在Block中修改__block int d = 30;IntSum intSum = ^(int a, int b) {NSLog(@"c = %i", c);d = 40;return a + b;}NSLog(@"%i", intSum(10, 20));NSLog(@"d = %i", d);}
使用Block来实现回调:
定义一个Button类,该类有一个block用来监听按钮被点击;
//Button.h#import <Foundation/Foundation.h>@class Button;typedef void (^ButtonBlock) (Button *btn);@interface Button : NSObject@property (nonatomic, assign) ButtonBlock block;- (void)click;@end
//Button.m#import "Button.h"@implementation Button- (void)click {_block(self);}@end
//main.m#import <Foundation/Foundation.h>#import "Button.h"int main(int argc, const char * argv[]) { @autoreleasepool { Button *button = [[[Button alloc] init] autorelease]; button.block = ^(Button *btn) { NSLog(@"按钮%@被点击了", button) }; [button click]; } return 0;}
0 0
- 【Objective-C学习-8】Block
- 【Objective-C学习笔记】block
- Objective-C 学习笔记 12 - Block
- 【《Objective-C 高级编程》 学习笔记--Block】
- 黑马程序员--Objective-C Block学习
- ios学习路线—Objective-C(Block)
- objective-c block 讲解
- objective-c block 讲解
- objective-c block 详解
- objective-c block 讲解
- objective-c block 讲解
- Objective-C block
- objective-c block 详解
- objective-c block 详解
- Objective-C中的Block
- Objective-C中的Block
- objective-c block 详解
- Objective-C中的Block
- 充斥着忙碌气息的2015春天,虽苦却乐
- reshape2介绍
- iOS 初学详细之 UITableView
- PHP安装中出现的问题
- Eclipse超实用快捷键,背熟这些开发效率提高20%
- 【Objective-C学习-8】Block
- 浅谈国产CPU, OS, 生态系统等的出路,暨小米生态、乐视生态、阿里OS
- Python 拷贝文件
- python之函数式编程
- wsimport报错Use of SOAP Encoding is not supported.
- 算法系列之二十四:离散傅立叶变换之音频播放与均衡器
- 序
- 面向对象入门
- iOS#import和#include和@class用法