block用法小结

2016-03-26  本文已影响118人  AYuan_

基本用法

定义block变量

/**
如果block没有形参,可以省略后面的()
*/
void (^myBlock)() = ^{
     NSLog(@"------");
     NSLog(@"--------");
 };
 myBlock();

定义属性block

@property (nonatomic, copy) void (^completionClock)();

带参数和返回值的block

int sum(int a, int b)
{
    return a + b;
}

int main()
{
    //指向函数的指针
    int (*p)(int,int) = sum;
    int d = p(10,12);
    NSLog(@"%d",d);
    
   //OC中不常用指向函数的指针,一般用block代替
    int (^sumblock)(int, int) = ^(int a, int b) {
        return a + b;
    };
    
    int c = sumblock(11, 11);
    NSLog(@"%d",c);

    //用block输出n条直线
    void (^lineblock)(int) = ^(int n)
    {
        for (int i = 0; i < n; i++) {
            NSLog(@"------");
        }
    };
    myblock2(5);
    return 0;
}

block使用总结

1>如何定义block变量
int (^sumBlock)(int,int); void (^myBlock)();
2>如何利用block封装代码

^(int a, int b) {
    return a - b;
};
^() {
    NSLog(@"----");
};
^ {
    NSLog(@"-----");
};
MyBlock block;
MyBlock b1,b2;
b1 = ^(int a, int b) {
    return a + b;
};
MyBlock b3 = ^(int a, int b){
    return a + b;
};
上一篇下一篇

猜你喜欢

热点阅读