首页 > 代码库 > Objective-C语言中的Block简介以及用法.

Objective-C语言中的Block简介以及用法.

Block语法是在iOS4.0的SDK 中开始新增的, 在那时就已经有了超过400多个API使用了Block语法.

Block对象又同样是继承与NSObject, 是C语言级别的语法和运行时特性. 和标准的C函数指针类似. 但其除了可执行语句外, 还可以类似对象可以保持状态数据. 

和C语言的函数指针类似, 但不完全相同. 常用来作为回调函数使用.

 

Block和函数的操作符对比:

函数指针使用的是 ‘*’

Block使用的是 ‘^’

 

下面是例子:

apple.h文件

#import <Foundation/Foundation.h>@interface apple : NSObject@property (nonatomic, copy) void (^shuiguo1)(void);  //定义一个Block, 且参数名为shuiguo1@property (nonatomic, copy) void (^shuiguo2)(void);@property (nonatomic, copy) void (^shuiguo3)(void);- (void)shuiguo;@end

apple.m文件

#import "apple.h"@implementation apple- (void)shuiguo{    if(_shuiguo1)  //判断_shuiguo1是否为0    {        NSLog(@"我是苹果");    }    if(_shuiguo2)    {        NSLog(@"我是香蕉");    }    if(_shuiguo3)    {        NSLog(@"我是橘子");    }}@end

main函数

#import <Foundation/Foundation.h>#import "apple.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        apple *app = [[apple alloc]init];  //创建一个app对象                app.shuiguo1 = ^{    //打印一个shuiguo1的Bolck.            NSLog(@"我是苹果");        };        app.shuiguo2 = ^{            NSLog(@"我是香蕉");        };        app.shuiguo3 = ^{            NSLog(@"我是橘子");        };        [app shuiguo];  //调用shuiguo的方法    }    return 0;}

 

 

Objective-C语言中的Block简介以及用法.