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;
}

 

 

posted @ 2014-10-09 17:29  背着吉他去流浪  阅读(466)  评论(0编辑  收藏  举报