生命周期
Strong
- strong表示對(duì)對(duì)象的強(qiáng)引用产禾。
- ARC下也可以用來修飾block,strong 和 weak兩個(gè)修飾符默認(rèn)是strong牵啦。
- 用于指針變量亚情,setter方法對(duì)參數(shù)進(jìn)行release舊值再retain新值。
Weak
- weak 表示對(duì)對(duì)象的弱引用哈雏,被weak修飾的對(duì)象隨時(shí)可被系統(tǒng)銷毀和回收楞件。
- weak比較常用的地方就是delegate屬性的設(shè)置衫生。
- 用weak修飾弱引用,不會(huì)使傳入對(duì)象的引用計(jì)數(shù)加1土浸。
assgin
- 在MRC 和 ARC下都可以使用罪针。
- 一般用來修飾基礎(chǔ)數(shù)據(jù)類型(NSInteger, CGFloat) 和 C數(shù)據(jù)類型(int ,float, double)等。它的setter方法直接賦值黄伊,不進(jìn)行任何retain操作泪酱。
retain
- 一般情況下,retain用在MRC情況下还最,被retain修飾的對(duì)象墓阀,引用計(jì)數(shù)retainCount要加1的。
- retain只能修飾oc對(duì)象拓轻,不能修飾非oc對(duì)象斯撮,比如說CoreFoundation對(duì)象就是C語言框架,它沒有引用計(jì)數(shù)扶叉,也不能用retain進(jìn)行修飾吮成。
- retain一般用來修飾非NSString 的NSObject類和其子類。
- 自動(dòng)把set方法中的成員變量辜梳,release原來的值粱甫,然后再retain新的值。
copy
- 一般情況下作瞄,copy可以用于對(duì)不可變?nèi)菀椎膶傩孕揎椫胁柘饕荖SArray /NSDictionary/NSString, 也可以用來修飾block宗挥。
- 在MRC和ARC下都可以使用乌庶。
- 其setter方法,與retain處理流程一樣契耿,先舊值release瞒大,再copy出新的對(duì)象。
安全策略
nonatomic
- nonatomic 非原子屬性搪桂。它的特點(diǎn)是多線程并發(fā)訪問性能高透敌,但是訪問不安全
atomic
- 特點(diǎn)就是安全但是是以耗費(fèi)系統(tǒng)資源為代價(jià)
- 為setter方法加鎖,而nonatomic 不為setter方法加鎖
訪問權(quán)限
readwrite
- 當(dāng)我們用readwrite修飾的時(shí)候表示該屬性可讀可改
- readwrite 程序自動(dòng)創(chuàng)建setter/getter方法踢械,readonly 程序創(chuàng)建getter方法酗电。此外還可以自定義setter/getter方法。
- 系統(tǒng)默認(rèn)的情況就是 readwrite内列。
readonly
- 用readonly修飾的時(shí)候表示這個(gè)屬性只可以讀取撵术,不可以修改,一般常用在我們不希望外界改變只希望外界讀取這種情況话瞧。
自定義
- 這兩個(gè)屬性修飾符用于設(shè)置自定義生成的getter和setter方法名嫩与,使用之后將不再使用系統(tǒng)默認(rèn)的setter和getter方法名