關於OC中的block自己的一些理解(一)

2022-08-21 15:51:11 字數 1303 閱讀 4976

一、關於block

1、block的作用:儲存一段**。

2、蘋果官方推薦的一種語法,類似於c語言的函式,但是比函式更加靈活。

3、^是block語法的標識。

二、block的用法

1)無返回值無引數

1 - (void

)myfirstblock2;

7//2.呼叫block

8myblock();

910 }

輸出結果:

2016-02-18 09:56:50.124 01-block[750:25107] 無引數無返回值
2)有引數沒有返回值

- (void)mysecondblock

; //2.呼叫block

mysecondblock(2,3);

}

輸出結果:

2016-02-18 10:03:22.221 01-block[811:30160] 有引數無返回值:5
3)有引數有返回值

1 - (void

)mythirdblock2;

7//2.呼叫block

8double r3 = mythirdblock(1.1,2.2

);9 nslog(@"

有引數有返回值:%f

",r3);

10 }

輸出結果:

2016-02-18

10:06:42.615

01-block[861:32505] 有引數有返回值:3.300000

三、block語法的格式

四、block的注意點

1)block內部可以訪問外部變數;

2)預設情況下,block內部不能修改外部的區域性變數

3)給區域性變數加上__block關鍵字,則這個區域性變數可以在block內部進行修改

示例**如下:

1 - (void

)myfourblock2;

9 }

如果寫成上面的**,xcode會在第六行「num = 6;」報錯:missing __block type specifier;

修改**如下:

- (void

)myfourblock

; myfourblock();

}

輸出結果:

2016-02-18

10:25:02.195

01-block[1016:45943] 6

**虐我千百遍,我待**如初戀!

OC中的Block,多型

首先我們來找一下每個區域內的記憶體位址 棧int a 10 nslog p a 堆 int p malloc 40 nslog p p 全域性靜態區 static int b 10 nslog p b 常量區 常量字串,儲存的是首位址 char str iphone nslog p str 區 ns...

oc中block的理解

block可能是我在學習objective c語法中遇到的第乙個puzzle的地方。確實,這個語法takes some getting use to.block實際是一種閉包,它是oc中對閉包的實現。閉包是什麼?清楚地記得這個是我去年在參加鵝廠的實習筆試的時候的乙個大題,記得沒錯是第二個大題。any...

OC 中的block使用

在ios的開發過程中,使用塊的地方很多也很方便,但是在使用塊的過程中要注意記憶體洩露的問題。在塊建立的時候,會對塊內的所有物件的引用計數加一,直到塊銷毀,所以在使用塊的過程中需要我們進行處理,在這裡以afnetworking的 舉例,如下 weak typeof self weakself self...