block的簡(jiǎn)單簡(jiǎn)介

1、block的聲明

void(^block)();

2、block的三種定義

三種方式 = ^(參數(shù)){  
}
a.void(^block1)() = ^(){

}
//如果沒(méi)有參數(shù) 參數(shù)可以隱藏。如果有參數(shù),定義的時(shí)候,必須要寫(xiě)參數(shù),而且必須要有參數(shù)變量名
b.
void(^block2)() = ^{
}
void(^block2)(int) = ^(int a) {
}
//bock返回值可以省略,不管有沒(méi)有返回值都可以省略
c.int(^block3)() = ^int{
  return 3;
}

3、bolck的用處

a. 封裝模型方法
b.傳值

傳值

只要能拿到對(duì)方就能傳值
順傳:給需要傳值的對(duì)象,直接定義屬性就能傳值
逆?zhèn)鳎河么?,block

4、block的存儲(chǔ)

只要block沒(méi)有引用外部局部變量,block放在全局區(qū)。

MRC管理block:
        只要block引用外部局部變量,block就放在棧區(qū)。
        block只能使用copy,不能使用retain,使用retain,block還在棧里面。
ARC管理block:
        只要arc引用外部局部變量,block放在堆里面。
        block使用strong,盡量不要用copy。

5、block會(huì)造成循環(huán)引用

block會(huì)對(duì)里面所有強(qiáng)指針變量都強(qiáng)引用一次。

6、其他

a.如果是局部變量,block是值傳遞。
 int a = 3;
void (^block)() = ^{
  NSLog(@"%d",a);
}
a = 5;
block();

//打印輸出a = 5
b.如果是靜態(tài)變量,block是指針傳遞```

static int a = 3;
void (^block)() = ^{
NSLog(@"%d",a);
}
a = 5;
block();

//打印輸出a = 3

c.如果是全局變量,_ _block修飾的變量,block是指針傳遞




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Block使用場(chǎng)景,可以在兩個(gè)界面的傳值,也可以對(duì)代碼封裝作為參數(shù)的傳遞等。用過(guò)GCD就知道Block的精妙之處。...
    Coder_JMicheal閱讀 824評(píng)論 2 1
  • iOS代碼塊Block 概述 代碼塊Block是蘋(píng)果在iOS4開(kāi)始引入的對(duì)C語(yǔ)言的擴(kuò)展,用來(lái)實(shí)現(xiàn)匿名函數(shù)的特性,B...
    smile刺客閱讀 2,468評(píng)論 2 26
  • 《Objective-C高級(jí)編程》這本書(shū)就講了三個(gè)東西:自動(dòng)引用計(jì)數(shù)、block、GCD,偏向于從原理上對(duì)這些內(nèi)容...
    WeiHing閱讀 10,105評(píng)論 10 69
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,754評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,659評(píng)論 19 139

友情鏈接更多精彩內(nèi)容