IOS開發之—-代碼塊的使用

來源:互聯網
上載者:User

 /*       在代碼快列印數字     */    NSLog(@"----------------resultBlocks---------------------->");        int(^resultBlocks)(int) =^(int num)                            {                                return num*20;                            };    int resultNum = resultBlocks(2);    NSLog(@"result: %4d",resultNum);                NSLog(@"--------------myprintBlock------------------------>");    void(^myprintBlock)(NSString *x)= ^(NSString *str){NSLog(@"@printBlock: %@",str);};    myprintBlock(@"Hello block");            NSLog(@"---------------printNumBlock----------------------->");    /*     在代碼快多個參數用 逗號隔開     */        void(^printNumBlock)(int,int);    printNumBlock = ^(int num,int num2)    {        num = num+num2;        NSLog(@"printNum: %d",num);    };        printNumBlock(10000,1000);            NSLog(@"---------------遞迴使用----------------------->");    /**     代碼快用在遞迴時候要注意了,要在調用之前初始化好整個代碼快,否則會運行錯誤!     怎麼結局錯誤呢?     1: 用sataic 關鍵字 使其在真箇類初始化之前初始化好     2: 使用 __block 關鍵字          */    __block void(^const  blocks)(int)=^(int i)    {        if (i > 0) {                        NSLog(@"num: %d",i);            blocks(i- 1);        }    };    blocks(4);        static void(^const  blocks2)(int)=^(int i)    {        if (i > 0) {                        NSLog(@"num: %d",i);            blocks2(i- 1);        }    };    blocks2(4);           NSLog(@"---------------sortArray----------------------->");    /*     在代碼快中字串數組排序     */    NSArray *stringArray = [NSArray arrayWithObjects:@"abc 1", @"abc 21", @"abc 12",@"abc 13",@"abc 0.5", nil];    NSComparator sortBlcok = ^(id String1, id String2)    {        return [String1 compare:String2];    };    NSArray *sortArray = [stringArray sortedArrayUsingComparator:sortBlcok];    NSArray *sortArray2 = [stringArray sortedArrayUsingComparator:^(id String1, id String2){        return [String1 compare:String2];    }];    NSLog(@"stringArray: %@",stringArray);    NSLog(@"sortArray: %@",sortArray2);            NSLog(@"------changeGlobalBlock--------------------------->");        /*     在代碼快中 改變全域部變數編     */    void(^changeGlobalBlock)(void)=^(void){        global++;      };    changeGlobalBlock();    NSLog(@"changeGlobalBlock: %d ",global);            NSLog(@"------changLocalNumBlock--------------------------->");    /*     在代碼快中 改變局部變數編譯是通不過的,需要在前面加 __block 關鍵字,否則會報這樣的一個錯誤     Variable is not assignable(miss_block type specifier     */    __block  int  localNum =500;    void(^changLocalNumBlock)(int)= ^(int i){       localNum = localNum+i;    };    changLocalNumBlock(30);    NSLog(@"changLocalNumBlock: %d",localNum);
參考這個部落格:
http://blog.sina.com.cn/s/blog_71715bf8010166ux.html
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.