Objective C - 屬性對(duì)比

MRC:

retain:適用繼承于NSObject類(lèi)的對(duì)象類(lèi)型。釋放舊的對(duì)象,將舊對(duì)象的值賦予輸入對(duì)象,再提高輸入對(duì)象的引用計(jì)數(shù)為1。

assign:適用基礎(chǔ)數(shù)據(jù)類(lèi)型 (NSInteger,CGFloat)和C數(shù)據(jù)類(lèi)型(int, float, double, char, 等等)。簡(jiǎn)單賦值,不更改對(duì)象的引用計(jì)數(shù)。

ARC:

strong(強(qiáng)引用):等同于retain,但在block聲明時(shí)和retainyou 區(qū)別。

weak(弱引用):適用代理的聲明。

copy(深拷貝、淺拷貝):適用NSString類(lèi)型和block類(lèi)型。

atomic和nonatomic:

atomic是Objc使用的一種線(xiàn)程保護(hù)技術(shù),基本上來(lái)講,是防止在寫(xiě)未完成的時(shí)候被另外一個(gè)線(xiàn)程讀取,造成數(shù)據(jù)錯(cuò)誤。而這種機(jī)制是耗費(fèi)系統(tǒng)資源的,所以在iPhone這種小型設(shè)備上,如果沒(méi)有使用多線(xiàn)程間的通訊編程,那么nonatomic是一個(gè)非常好的選擇。

retain和strong的區(qū)別:

在聲明block時(shí),strong相當(dāng)于copy,retain相當(dāng)于assign。

assign和strong的區(qū)別:

在聲明block時(shí),strong相當(dāng)于copy,retain相當(dāng)于assign。

assign和weak的區(qū)別:

在A(yíng)RC中,在有可能出現(xiàn)循環(huán)引用的時(shí)候,往往要通過(guò)讓其中一端使用weak來(lái)解決;自身已經(jīng)對(duì)它進(jìn)行一次強(qiáng)引用,沒(méi)有必要再?gòu)?qiáng)引用一次,此時(shí)也會(huì)使用weak。

assign 可以用非OC對(duì)象,而weak必須用于OC對(duì)象。

weak 此特質(zhì)表明該屬性定義了一種“非擁有關(guān)系” (nonowning relationship)。為這種屬性設(shè)置新值時(shí),設(shè)置方法既不保留新值,也不釋放舊值。此特質(zhì)同assign類(lèi)似,然而在屬性所指的對(duì)象遭到摧毀時(shí),屬性值也會(huì)清空(nil out)。

而 assign 的“設(shè)置方法”只會(huì)執(zhí)行針對(duì)“純量類(lèi)型”(scalar type,例如 CGFloat 或 NSlnteger 等)的簡(jiǎn)單賦值操作。

strong強(qiáng)引用和weak弱引用的區(qū)別:

(weak和strong)不同的是 當(dāng)一個(gè)對(duì)象不再有strong類(lèi)型的指針指向它的時(shí)候 它會(huì)被釋放? ,即使還有weak型指針指向它。

一旦最后一個(gè)strong型指針離去 ,這個(gè)對(duì)象將被釋放,所有剩余的weak型指針都將被清除。

深拷貝和淺拷貝:

用@property聲明 NSString、NSArray、NSDictionary 經(jīng)常使用copy關(guān)鍵字,是因?yàn)樗麄冇袑?duì)應(yīng)的可變類(lèi)型:NSMutableString、NSMutableArray、NSMutableDictionary,他們之間可能進(jìn)行賦值操作,為確保對(duì)象中的字符串值不會(huì)無(wú)意間變動(dòng),應(yīng)該在設(shè)置新屬性值時(shí)拷貝一份。

最后編輯于
?著作權(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)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • iOS開(kāi)發(fā)中, 之前一直使用swift, 因此對(duì)于Objective-C的內(nèi)存管理機(jī)制長(zhǎng)期處于混亂的一知半解狀態(tài)....
    icetime17閱讀 945評(píng)論 1 8
  • 307、setValue:forKey和setObject:forKey的區(qū)別是什么? 答:1, setObjec...
    AlanGe閱讀 1,718評(píng)論 0 1
  • 禪與 Objective-C 編程藝術(shù) (Zen and the Art of the Objective-C C...
    GrayLand閱讀 1,774評(píng)論 1 10
  • 初夏 云朵一般的白色蘆葦拉著風(fēng)的衣襟呼喚沒(méi)有音樂(lè)的午后酌一杯香茗的時(shí)間與文字廝守 蝴蝶撲扇的聲音 彰顯著寧?kù)o與安恬...
    初雪日記閱讀 113評(píng)論 0 0
  • 一和四說(shuō)好朋友難找,好朋友像繁星 友情是什么,不是什么,朋友可以看出眼神里的那個(gè)……
    笑顏于粵閱讀 364評(píng)論 0 1

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