生命周期
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)菀椎膶傩孕揎椫?,主要是NSArray /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方法名