一、block 修飾詞需要使用 copy 把保存在棧中的 blcok 拷貝到堆中欲险,因為如果是保存在棧中的block镐依,他會隨著函數(shù)調(diào)用結(jié)束被銷毀。從而導(dǎo)致我們在執(zhí)行一個包含block的函數(shù)之后天试,就無法再訪問這個block槐壳。因為(函數(shù)結(jié)束,函數(shù)棧就銷毀了喜每,存在函數(shù)里面的block也就沒有了)务唐,我們再使用block時雳攘,就會產(chǎn)生空指針異常。如果是堆中的block绍哎,也就是copy修飾的block来农。他的生命 周期就是隨著對象的銷毀而結(jié)束的。只要對象不銷毀崇堰,我們就可以調(diào)用的到在堆中的block。
二涩咖、在聲明block屬性時需要確認(rèn)在調(diào)用block時另一個線程有沒有可能去修改block海诲,如果確定不會有這種情況發(fā)生的話,那么block屬性聲明可以用nonatomic檩互。如果不肯定的話特幔,那么首先需要聲明block屬性為atomic,但是有了atomic來保證基本的原子性還是沒有達(dá)到線程安全的闸昨,接著在調(diào)用時需要把block先賦值給本地變量蚯斯,以防止block突然改變。
三饵较、如果在 block 中使用外部變量需要使用__block
關(guān)鍵字拍嵌,提到__block
就要明白在 block 的使用中__block
與__weak
的區(qū)別。
1.__block
不管是ARC還是MRC模式下都可以使用循诉,可以修飾對象横辆,還可以修飾基本數(shù)據(jù)類型。
2.__weak
只能在ARC模式下使用茄猫,也只能修飾對象(NSString)狈蚤,不能修飾基本數(shù)據(jù)類型(int)。
3.__block
對象可以在block中被重新賦值划纽,__weak
不可以脆侮。
4.__block
對象在ARC下可能會導(dǎo)致循環(huán)引用,非ARC下會避免循環(huán)引用勇劣,__weak
只在ARC下使用靖避,可以避免循環(huán)引用。
PS:__unsafe_unretained
修飾符可以被視為iOS SDK 4.3以前版本的__weak
的替代品芭毙,不過不會被自動置空為nil筋蓖。所以盡可能不要使用這個修飾符。
iOS 中使用 block 相關(guān)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門锭魔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人路呜,你說我怎么就攤上這事迷捧。” “怎么了胀葱?”我有些...
- 文/不壞的土叔 我叫張陵漠秋,是天一觀的道長。 經(jīng)常有香客問我抵屿,道長庆锦,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任轧葛,我火速辦了婚禮搂抒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尿扯。我一直安慰自己求晶,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布姜胖。 她就那樣靜靜地躺著誉帅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪右莱。 梳的紋絲不亂的頭發(fā)上蚜锨,一...
- 文/蒼蘭香墨 我猛地睜開眼耘柱,長吁一口氣:“原來是場噩夢啊……” “哼如捅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起调煎,我...
- 正文 年R本政府宣布般甲,位于F島的核電站,受9級特大地震影響鹅颊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜墓造,卻給世界環(huán)境...
- 文/蒙蒙 一堪伍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧觅闽,春花似錦帝雇、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孕锄,卻和暖如春吮廉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背畸肆。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 《Objective-C高級編程》這本書就講了三個東西:自動引用計數(shù)、block碴巾、GCD溯捆,偏向于從原理上對這些內(nèi)容...
- *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
- 說明:面試題來源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個靠譜的 iOS》,其中共55題碳锈,除第一題為糾錯...