block初探

直接貼代碼   --

#import <Foundation/Foundation.h>

typedef int (^Sum)(int,int);

void printHelloWorld(void)
{
    printf("Hello,world!\n");
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        // insert code here...
        NSLog(@"Hello, World!");
        //使用Block打印Hello,world!
        void (^blk)(void) = ^{printf("Hello, World!\n");};
        blk();
        /*
            Block語法
            返回值類型 (^block名)(參數列表) = ^(參數列表){表達式}
            block可以訪問外部變量,但不能改變外部變量的值,通過在變量前加__block 可以實現
            改變外部變量的值
         */
        
        //比較於函數指針
        void (*funcPoint)(void) = NULL;
        funcPoint = &printHelloWorld;
        funcPoint();
        
        //用typedef 定義一個block
        
        Sum sum = ^(int x,int y){
            return x + y;
        };
        NSLog(@"%d",sum(10,20));
    }
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章