block iOS 塊

來源:互聯網
上載者:User

標籤:

block 是個很陌生的東西啊。以前沒有學會,現在再看它,還是覺得很稀奇古怪。

無奈,之後硬著頭皮學了。。

//有參傳回值

格式:

傳回值類型 (^變數名)(參數類型及個數) = ^(形參列表){

代碼塊語句;

return;

};

 

eg:

int (^plus)(int a,int b) = ^(int a,int b){

            return a+b;

        };

        

        NSLog(@"%d",plus(2,3));

1.傳回值類型是int;

2.變數名是plus;

3.參數類型是int,個數,就是使用逗號隔開;

4.在後面,形參也是要分別都寫出來的;

5.在大括弧裡面把要寫的語句加上;

6.最後使用分號,以示結束;

7.調用時,block方法後面要添加().

這樣就相當於公式吧。以前不求甚解,現在求也求不通。

 

對於無傳回值的block,就是沒有傳回值的,可以分為有參數和沒有參數兩種。

只是單純地去執行裡面的語句。我是這麼理解的。

 

有參無傳回值:

格式:

void(^變數名)(參數類型及個數) = ^(形參列表){

代碼塊語句;

};

 

eg:

void (^myblock1)(int,int) = ^(int a, int b){

            NSLog(@"a+b=%d",a+b);

        };

        

        myblock1(1,2);

 

無參有傳回值

格式:

void (^block變數名)() = ^(){

  代碼塊的語句;

};

最佳化:

void (^block變數名)() = ^{

  代碼塊語句;

};

void(^myBlock4)()=^{

  NSLog(@"我很好");

};

 

總結了上面的以後,覺得清晰了很多。在UI裡面也會用到傳值。以後在工作中要多總結、多實踐。

光說不練假把式。。

 

補:

 typedef 忘寫了。。

typedef,其實是把block定義為了一個類型。當同一類型有多種不同的變數的時候,這個就方便多了。

typedef void (^Block)();

----相當於定義了一個Block類型。我們可以隨便定義這個類型的變數了。

Block b1 = ^{

 NSLog(@"helloWorld");

};

b1();

//定義有參數/傳回值的block類型

//定義新的別名

//傳回值是int,有兩個int類型的參數

typedef int (^NewType)(int,int);

NewType new1 = ^(int a,int b){

  return a+b;

};

 

//連續定義多個NewType類型的變數

NewType new2,new3,new4;

new1 = ^(int x,int y){

  return x>y?x:y;

};

int s = new1(2,3);

NSLog(@"s = %d",s);

相對來說,還是很方便快捷的。

block iOS 塊

聯繫我們

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