iOS Block的簡單使用以及__block 和static修飾變數

來源:互聯網
上載者:User

標籤:平方根   pointer   ptr   str   傳值   簡單方法   blocks   result   class   

 

簡單的代碼總結,不足之處多多指教。

//簡單的使用-(void)blockOne{        int number=23;        int(^BlockOne)(int) = ^(int num2)    {                return number*num2;    };            NSLog(@"輸出的block %d",BlockOne(2));                    }-(void)blockTwo{       int(^block)(int,int) = ^(int stra,int str2)    {                return stra + str2;            };            NSLog(@"這是第二個啊 %d",block(2,3));            }-(void)blockThree{                    //下邊這個代表Block 會匯創輸入的 平方根(int a 就是參數咧,return a*a ; 就是行為主體)。記得主題後邊要加“;” 因為是敘述,而整個{} 後邊也要加“;”  因為Block 是個物件實體        //小括弧裡邊的3 會被當成 輸入值然後由block輸出3*3=9 致電該給reblock 這個變數            int reblock = ^(int a){ return  a*a;}(3);            NSLog(@"reblock %d",reblock);        //上邊的簡單方法  回傳值 (^名字)(參數列);        int (^square)(int);        //有一個 square 的Block Pointer  其所指向的Block 是有一個int 輸入 和輸出        square = ^(int a){return a*a;};//將剛才的實體 制定給square        //使用        NSLog(@"輸出square 的 平方%d",square(2));    }

 

 

Block中變數的值在函數內外的變化

-(void)blockPointer{        #define mark  變數的變化 是否可以改變其值    //  1 未加修飾   Block  外改變outA後  不改變最後結果       int outA = 8;
int(^myPtr)(int) = ^(int a) { return outA + a; }; outA = 10;
//去與 block 在同一個範圍中值

int result = myPtr(3);
NSLog(@"block 外改變 outA的值為10後 會是13嘛 %d",result); ///這個值在進行到 block中時 第一次 會copy 到block中去,下次再用直接用copy值,其值之後辯護啊 對其都不會有影響 指的是變數的值; 如果是一個pointer指標的話,它的值是可以在block 裡變化的 // 2 __block 修飾後 其外改變,可以改變 在其內改變 ,可以改變 //外部改變 __block int outB = 8;
int(^myPtrB)(int) = ^(int b) {
return outB + b; }; outB = 10;
//去與 block 在同一個範圍中值 int resultB = myPtrB(3); NSLog(@"block 外改變 outB的值為10後 會是13嘛 %d",resultB); //block 內部改變 __block int outC = 8; int(^myPtrC)(int) = ^(int c) { outC = 10; return outC + c; }; NSLog(@"block 內部 變 outC的值為10後 會是13嘛 %d",myPtrC(3)); }

#define mark static 修飾變數的時候值的變化// 用staic 修飾是的改變 因為outC是個static 變數會直接反應其值-(void)blockStaticChange{ // 2 __block 修飾後 其外改變,可以改變 在其內改變 ,可以改變 //外部改變 static int outB = 8; int(^myPtrB)(int) = ^(int b) { return outB + b; }; outB = 10; //去與 block 在同一個範圍中值 int resultB = myPtrB(3); NSLog(@"static 外改變 outB的值為10後 會是13嘛 %d",resultB); //block 內部改變 static int outC = 8; int(^myPtrC)(int) = ^(int c) { outC = 10; return outC + c; }; NSLog(@"static 內部 變 outC的值為10後 會是13嘛 %d",myPtrC(3)); }

 

iOS Block的簡單使用以及__block 和static修飾變數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.