strong weak assign copy區(qū)別


  • assign:用于對(duì)基本數(shù)據(jù)類型進(jìn)行賦值操作,不更改引用計(jì)數(shù)。也可以用來修飾對(duì)象,但是,被assign修飾的對(duì)象在釋放后,指針的地址還是存在的,也就是說指針并沒有被置為nil,成為野指針。如果后續(xù)在分配對(duì)象到堆上的某塊內(nèi)存時(shí),正好分到這塊地址,程序就會(huì)crash。之所以可以修飾基本數(shù)據(jù)類型,因?yàn)榛緮?shù)據(jù)類型一般分配在棧上,棧的內(nèi)存會(huì)由系統(tǒng)自動(dòng)處理,不會(huì)造成野指針。

  • weak:修飾Object類型,修飾的對(duì)象在釋放后,指針地址會(huì)被置為nil,是一種弱引用。


delegate為何要用weak修飾:

  • 在ARC環(huán)境下,為避免循環(huán)引用,往往會(huì)把delegate屬性用weak修飾;在MRC下使用assign修飾。
    weak和strong不同的是:當(dāng)一個(gè)對(duì)象不再有strong類型的指針指向它的時(shí)候,它就會(huì)被釋放,即使還有weak型指針指向它,那么這些weak型指針也將被清除。
    ARC下的strong等同于MRC下的retain都會(huì)把對(duì)象引用計(jì)數(shù)加1。

copy

  • copy:會(huì)在內(nèi)存里拷貝一份對(duì)象,兩個(gè)指針指向不同的內(nèi)存地址。一般用來修飾NSString等有對(duì)應(yīng)可變類型的對(duì)象,因?yàn)樗麄冇锌赡芎蛯?duì)應(yīng)的可變類型(NSMutableString)之間進(jìn)行賦值操作,為確保對(duì)象中的字符串不被修改 ,應(yīng)該在設(shè)置屬性是拷貝一份。而若用strong修飾,如果對(duì)象在外部被修改了,會(huì)影響到屬性。

block屬性為什么需要用copy來修飾?

  • 因?yàn)樵贛RC下,block在創(chuàng)建的時(shí)候,它的內(nèi)存是分配在棧(stack)上的,而不是在堆(heap)上,可能被隨時(shí)回收。他本身的作于域是屬于創(chuàng)建時(shí)候的作用域,一旦在創(chuàng)建時(shí)候的作用域外面調(diào)用block將導(dǎo)致程序崩潰。通過copy可以把block拷貝(copy)到堆,保證block的聲明域外使用。在ARC下寫不寫都行,編譯器會(huì)自動(dòng)對(duì)block進(jìn)行copy操作。

__block與__weak的區(qū)別

__block:在ARC和MRC下都可用,可修飾對(duì)象,也可以修飾基本數(shù)據(jù)類型。

__block對(duì)象可以在block被重新賦值,__weak不可以。

__weak:只在ARC中使用,只能修飾對(duì)象,不能修飾基本數(shù)據(jù)類型(int、bool)。

同時(shí),在ARC下,要避免block出現(xiàn)循環(huán)引用,經(jīng)常會(huì):__weak typedof(self) weakSelf = self;

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 對(duì)于第二象限的人,在工作中可以適當(dāng)授權(quán)。 授權(quán)有幾個(gè)好處:一是讓他們感受到上級(jí)的信任,這樣有利于保...
    張遠(yuǎn)娜閱讀 157評(píng)論 0 0
  • 有人說,看別人的生活,是思考自己的最好方式。于是,我偷得半日閑,去看電影《岡仁波齊》。 電影的英文譯名“通往靈魂的...
    女性心理羅近月閱讀 604評(píng)論 1 3
  • 10點(diǎn)到現(xiàn)在,快2個(gè)小時(shí)了,今天斷舍離的成果是清了三大袋垃圾,趁我媽沒回來,趕緊跑去樓下扔了。里面有些是全新的腐竹...
    姵穎閱讀 470評(píng)論 2 2
  • 我收留了一只身上帶竊聽器的流浪貓,差點(diǎn)因此惹下風(fēng)流債(詳見我的上篇《我被我的貓囚禁了》),因此我搬了家。 搬到這個(gè)...
    張牛角閱讀 1,797評(píng)論 4 2
  • 記憶深刻的中西醫(yī)各科室老師 呼吸科:(于大爺)方劑很重要,治學(xué)要嚴(yán)謹(jǐn)。 (姜偉洲老師我就不提問了,避難尷尬。 (其...
    幸福漾開閱讀 361評(píng)論 1 1

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