@property的所有修飾詞

線性安全的:nonatomic,atomic

訪問權(quán)限的:readonly,readwrite

內(nèi)存管理(ARC):strong,assign,weak,copy

內(nèi)存管理(MRC):assign,retain,copy

指定方法名稱:setter= ,getter=

weak與assign用法的不同:

1>在ARC中,出現(xiàn)循環(huán)引用的時(shí)候,必須要用一端使用weak,比如:自定義View的代理屬性

2>已經(jīng)自身對(duì)它強(qiáng)引用一次,沒有必要再?gòu)?qiáng)引用一次,此時(shí)使用weak,自定義View的子控件屬性一般使用weak,但是也可以使用strong

3>weak當(dāng)對(duì)象銷毀的時(shí)候,指針會(huì)被自動(dòng)設(shè)置為nil,而assign不會(huì),assign可以用非OC對(duì)象,而weak必須用于OC對(duì)象

4>在ARC環(huán)境下,無論是強(qiáng)指針還是弱指針都不需要在dealloc設(shè)置為nil,ARC會(huì)自動(dòng)幫我們處理

copy的使用:

1>對(duì)于字符串和block的屬性一般使用copy

2>字符串使用copy是為了外部把字符串內(nèi)容改了,影響該屬性

3>block使用copy是在MRC遺留下來的,在MRC,方法內(nèi)部的block是在棧區(qū)的,使用copy可以把它放到堆區(qū).在ARC中對(duì)于block使用copy還是strong效果是一樣的

4>@property(nonatomic,copy)NSMutableArray*mutableArray; 使用copy修飾可變是數(shù)組時(shí),調(diào)用了數(shù)組的添加,刪除,修改的方法時(shí),程序會(huì)因?yàn)檎也坏綄?duì)應(yīng)的方法而崩潰,因?yàn)閏opy就是復(fù)制一個(gè)不可變的NSArray的對(duì)象

5>想要的自己的類也支持copy的功能需要以下兩個(gè)操縱:1/遵守NSCopying協(xié)議,2/實(shí)現(xiàn)-(id)copyWithZone:(NSZone*)zone;方法.屬性中使用copy的是字符串和block.

6>在重寫帶copy關(guān)鍵字的setter時(shí)候,一定要調(diào)用一下傳入的對(duì)象的copy方法,然后在賦值給該setter的方法對(duì)應(yīng)的成員變量

@protocol和category中使用@property:

1>在protocol中使用property只會(huì)生成setter和getter方法是聲明,我們使用屬性的目的是希望遵守我協(xié)議的對(duì)象實(shí)現(xiàn)該屬性

2>在category使用@property也是只會(huì)生成setter和getter方法的聲明,如果我們真的需要給category增加屬性的實(shí)現(xiàn),需要借助于運(yùn)行時(shí)的兩個(gè)函數(shù):1.objc_setAssociatedObject2.objc_getAssociatedObject

@synthesize和@dynamic分別的有什么作用:

1>@synthesize和@dynamic是@property兩個(gè)對(duì)應(yīng)的詞,用來修飾屬性變量的,如果@synthesize和@dynamic都沒有寫,默認(rèn)的就是@synthesizevar = _var

2>@synthesize的語(yǔ)義是你沒有手動(dòng)實(shí)現(xiàn)setter和getter方法,那么編譯器會(huì)自動(dòng)為你加上這兩個(gè)方法

3>@dynamic告訴編譯器,屬性的setter和getter方法用用戶自己實(shí)現(xiàn),不自動(dòng)生成,(注意:對(duì)于readonly的屬性只需要提供getter方法即可).假如一個(gè)屬性被聲明為@dynamicvar ,然后你沒有提供setter和getter方法,在編譯的時(shí)候沒有問題,但是當(dāng)程序運(yùn)行到instance.var=someVar,由于缺少了setter方法會(huì)導(dǎo)致程序崩潰;或者當(dāng)運(yùn)行到someVar=var時(shí).由于缺少getter方法同樣會(huì)導(dǎo)致崩潰.也就是在編譯的時(shí)候沒有問題,但是在運(yùn)行的時(shí)候才會(huì)執(zhí)行相應(yīng)的方法,這就是動(dòng)態(tài)綁定.

[immutableObject copy] // 淺復(fù)制

[immutableObject mutableCopy] //深復(fù)制

[mutableObject copy] //深復(fù)制

[mutableObject mutableCopy] //深復(fù)制

copy:淺拷貝,會(huì)創(chuàng)建新的內(nèi)存空間,并將舊的數(shù)據(jù)的地址值指向新的內(nèi)存空間,當(dāng)新的數(shù)據(jù)修改時(shí)候舊的也會(huì)修改,但是當(dāng)新增對(duì)象的時(shí)候只會(huì)添加某一個(gè)對(duì)象。

Mutable Copy:深拷貝,會(huì)創(chuàng)建兩個(gè)完全獨(dú)立的內(nèi)存空間,數(shù)據(jù)值一樣。

最后編輯于
?著作權(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)容

  • 1.配置 2.發(fā)送函數(shù) 3.生成驗(yàn)證碼保存到session中,并發(fā)送 4.驗(yàn)證并綁定 小結(jié):1.這是一種思路,跟發(fā)...
    烏龜?shù)穆?/span>閱讀 419評(píng)論 0 1
  • 周六,雨天。 被肚子痛醒兩次,第二次痛醒時(shí)你睜眼轉(zhuǎn)身抱向我。第二次醒來我們清晨纏綿。 本該做單的一天,你為了我堅(jiān)持...
    Ermao閱讀 195評(píng)論 0 1
  • 藍(lán)瘦香菇的梗好像已經(jīng)快過去了。但是老師留給我的印象卻那么深。 人大的博士,帥氣而優(yōu)雅,有一天上課,說起藍(lán)瘦香菇。說...
    水漣漣夢(mèng)所歸閱讀 367評(píng)論 0 1

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