Block的一些注意事項

Block注意事項


//1.block中可以訪問外面的變量

    int a = 10 ;

    void (^myBlock)()=^{

        NSLog(@"a = %i",a);


  };

    myBlock();//a = 10

//2.block中可以定義和外界同名的變量壳炎,如果定義同名變量,在block中訪問的是block中的變量

    int a = 10 ;

    void (^myBlock)()=^{

        int a = 20;

        NSLog(@"a = %i",a);


  };

    myBlock();//a = 20

//3.默認(rèn)情況下逼侦,不可以在block中修改外界變量的值

    //block中的變量和外界的變量并不是同一個變量

    //如果block中訪問到了外界的變量冕广,block會將外界的變量拷貝一份到堆內(nèi)存中疏日,可以打印內(nèi)存地址查看

    //因為block中使用的外界變量是copy的,修改調(diào)用之前的變量的值撒汉,不會影響到block中copy的值

    int a = 10 ;

    NSLog(@"&a = %p",&a);// &a = 0x7fff5fbff84c

    void (^myBlock)()=^{

        NSLog(@"&a = %p",&a);

// &a = 0x100700710

        NSLog(@"a = %i",a);


  };

    a = 40;

    myBlock();//a = 10

//如果想在block中修改外界變量的值沟优,必須在外界變量前加上__block

//如果在block中修改了外界變量的值,會影響到外界變量的值

   __block int a = 10 ;

    NSLog(@"a = %i",a);//10

    void (^myBlock)()=^{

        a = 40;

        NSLog(@"a = %i",a);//40


  };


  myBlock();

//為什么不加__block不能修改block中修改外界的值

//因為在編譯的文件中main.cpp中a 是作為值傳遞

     int a = 10 ;

    void (^myBlock)()=^{

        NSLog(@"a = %i",a);


  };


  myBlock();

//為什么加了__block能修改block中修改外界的值

//如果加了__block之后就是地址傳遞睬辐,所以可以在block中修改外界變量的值

   __block int a = 10 ;

    void (^myBlock)()=^{

        a = 50;

        NSLog(@"a = %i",a);


  };


  myBlock();

block是存儲在堆中還是棧中

默認(rèn)在棧中挠阁,如果對一個block進行copy操作,block會轉(zhuǎn)移到堆中

棧的存儲方式是先進后出溯饵,存的時候:第一份先存到棧底侵俗,最后的一份存到棧頂,取的時候先取出棧頂?shù)姆峥詈笕〕鰲5椎?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隘谣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啄巧,更是在濱河造成了極大的恐慌寻歧,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秩仆,死亡現(xiàn)場離奇詭異码泛,居然都是意外死亡,警方通過查閱死者的電腦和手機澄耍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門噪珊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人齐莲,你說我怎么就攤上這事痢站。” “怎么了选酗?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵阵难,是天一觀的道長。 經(jīng)常有香客問我星掰,道長多望,這世上最難降的妖魔是什么嫩舟? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任氢烘,我火速辦了婚禮,結(jié)果婚禮上家厌,老公的妹妹穿的比我還像新娘播玖。我一直安慰自己,他們只是感情好饭于,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布蜀踏。 她就那樣靜靜地躺著维蒙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪果覆。 梳的紋絲不亂的頭發(fā)上颅痊,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音局待,去河邊找鬼斑响。 笑死,一個胖子當(dāng)著我的面吹牛钳榨,可吹牛的內(nèi)容都是我干的舰罚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼薛耻,長吁一口氣:“原來是場噩夢啊……” “哼营罢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饼齿,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤饲漾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后候醒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體能颁,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年倒淫,在試婚紗的時候發(fā)現(xiàn)自己被綠了伙菊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡敌土,死狀恐怖镜硕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情返干,我是刑警寧澤兴枯,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站矩欠,受9級特大地震影響财剖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜癌淮,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一躺坟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乳蓄,春花似錦咪橙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽产舞。三九已至,卻和暖如春菠剩,著一層夾襖步出監(jiān)牢的瞬間易猫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工具壮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留擦囊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓嘴办,卻偏偏與公主長得像瞬场,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涧郊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容