private是完全私有的膝昆,只有在類自己里面可以調(diào)用丸边,在類的外部和子類都不能調(diào)用,子類也不能繼承父類的private的屬性和方法荚孵。
protected雖然可以被外界看到妹窖,但外界卻不能調(diào)用,只有自己及自己的子類可以調(diào)用(protected的屬性和方法都可以被子類所繼承和調(diào)用)收叶。
private和protected的共同點(diǎn):外部都不可以訪問(wèn)骄呼。
private和protected的不同點(diǎn):在同一類中可視為一樣,但在繼承中就不同了滔驾,private在派生類中不可以被訪問(wèn)谒麦,而protected可以。
public對(duì)任何類和成員都完全公開(kāi)哆致,無(wú)限制訪問(wèn)绕德。
internal同一應(yīng)用程序集內(nèi)部(在VS.NET中的一個(gè)項(xiàng)目中,這里的項(xiàng)目是指單獨(dú)的項(xiàng)目摊阀,而不是整個(gè)解決方案)可以訪問(wèn)耻蛇。
public和internal的區(qū)別:public的成員可以跨程序集,但internal不能胞此,同一程序集中具有相同的效果臣咖。
protected internal:只能在同一應(yīng)用程序集內(nèi)本類、派生類訪問(wèn)漱牵。
readwrite 是可讀可寫(xiě)特性夺蛇;在需要生成getter方法和setter方法時(shí)使用(補(bǔ)充:默認(rèn)屬性,將生成不帶額外參數(shù)的getter和setter方法(setter方法只有一個(gè)參數(shù)))
readonly 是只讀特性 只會(huì)生成getter方法 不會(huì)生成setter方法 ;在不希望屬性在類外改變時(shí)使用
assign 是賦值特性酣胀,setter方法將傳入?yún)?shù)賦值給實(shí)例變量刁赦;在僅設(shè)置變量時(shí)使用;
retain 表示持有特性闻镶,setter方法將傳入?yún)?shù)先保留甚脉,再賦值,傳入?yún)?shù)的retaincount會(huì)+1;(retain釋放舊的對(duì)象铆农,將舊對(duì)象的值賦予輸入對(duì)象牺氨,再提高輸入對(duì)象的索引計(jì)數(shù)為1 ,使用retain墩剖。實(shí)際中幾乎沒(méi)用過(guò)...現(xiàn)在到了ARC時(shí)代猴凹,更用不到了)
copy 表示拷貝特性,setter方法將傳入對(duì)象復(fù)制一份岭皂;在需要完全一份新的變量時(shí)使用郊霎。
nonatomic 非原子操作,決定編譯器生成的setter getter是否是原子操作
atomic表示多線程安全蒲障,一般使用nonatomic