IOS開發之—-代碼塊的使用 – iPhone手機開發技術文章 iPhone軟體開發教學課程

[java]

<P style="TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 26px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN-TOP: 0px; FONT-FAMILY: Arial; WORD-WRAP: normal; MARGIN-BOTTOM: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; COLOR: rgb(73,73,73); FONT-SIZE: 14px; WORD-BREAK: normal; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px"></P><PRE class=plain name="code"></PRE><PRE class=java name="code"> /* 

       在代碼快打印數字 

     */  

    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 

     */  www.aiwalls.com

    __block  int  localNum =500;  

    void(^changLocalNumBlock)(int)= ^(int i){  

       localNum = localNum+i;  

    };  

    changLocalNumBlock(30);  

    NSLog(@"changLocalNumBlock: %d",localNum);</PRE>  

<PRE></PRE>  

<PRE class=java name="code">參考這個博客:</PRE><PRE class=java name="code">https://blog.sina.com.cn/s/blog_71715bf8010166ux.html   

</PRE>  

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *