readonly, readwrite:是控制屬性的訪問權限,readonly只生成getter方法,其餘類是沒法修改其值的。readwrite是會同時生成getter和setter方法,其餘類能夠修改其值。
assign, retain, weak, strong, copy,unsafe_unretained:
在non-ARC中,assign和retain是一組,assign的對象屬性引用計數不變,而retain會被+1。
對應的在ARC中,weak和strong是一組,weak的對象屬性引用計數不變,而strong會被+1。
assign還用來賦值非對象屬性,例如,int,double,BOOL,char等。
copy用來設置不可變的對象屬性,例如,NSString,NSArray,NSDictionary等。
在ARC中,一個屬性被設置爲weak,當出了做用域,其值會被設置成nil。與其相對應的是unsafe_unretained,unsafe_unretained不會改變對象屬性的引用計數,同時出了做用域的時候,其值也不會被設置成nil。unsafe_unretained至關於non-ARC中的assign。
atomic,nonatomic:atomic是原子操做,nonatomic是非原子操做,通常經常使用的是nonatomic。atom