類:是一種結(jié)構(gòu)斩松,它表示對(duì)象的類型瞻凤,對(duì)象引用類來(lái)獲取和本身有關(guān)的各種信息憨攒,特別是運(yùn)行什么代碼來(lái)處理每種操作。
對(duì)象:是一種結(jié)構(gòu)阀参,它包含值和指向其類的隱藏指針肝集。
實(shí)例:對(duì)象的另一種稱呼。
消息:是對(duì)象可以執(zhí)行的操作蛛壳,用于通知對(duì)象去做什么杏瞻。對(duì)象接收消息后所刀,將查詢對(duì)應(yīng)的類,以便查找正確的代碼來(lái)運(yùn)行捞挥。
方法:是為響應(yīng)消息而運(yùn)行的代碼浮创,根據(jù)對(duì)象的類,消息可以調(diào)用不同的方法砌函。
接口:是對(duì)象的類應(yīng)該提供特殊的特性的描述斩披。
什么是property?
property是一種代碼生成機(jī)制讹俊,能夠生成不同類型的getter/setter函數(shù)垦沉,特別是如果你想要用點(diǎn)(.)操作符號(hào)來(lái)存取變量的話,你就能必須使用property劣像。
如何使用乡话?
用法如:@property (attribute1,attribute2) float value;
這些attribute包括:
readonly表示這個(gè)屬性是只讀的摧玫,就是只生成getter方法耳奕,不會(huì)生成setter方法。
readwrite可讀可寫(xiě)(默認(rèn))設(shè)置可訪問(wèn)級(jí)別诬像。
assign:簡(jiǎn)單賦值屋群,不更改索引計(jì)數(shù)
copy:建立一個(gè)索引數(shù)為1的對(duì)象,然后釋放舊對(duì)象
retain:釋放(release)舊對(duì)象坏挠,將舊對(duì)象的值賦予輸入對(duì)象芍躏,再提高輸入對(duì)象的索引計(jì)數(shù)為1
nonatomicnonatomic非原子性訪問(wèn),不加同步降狠,多線程并發(fā)訪問(wèn)會(huì)提高性能对竣。注意,如果不加此屬性榜配,
則默認(rèn)是兩個(gè)訪問(wèn)方法都為原子型事務(wù)訪問(wèn)否纬。
前兩個(gè)只是簡(jiǎn)單的設(shè)定變量的可讀寫(xiě)性。
詳細(xì)解釋:copy其實(shí)是建立了一個(gè)相同的對(duì)象蛋褥,而retain不是:
比如一個(gè)NSString對(duì)象临燃,地址為0x1111,內(nèi)容為@"STR" ,copy到另外一個(gè)NSString之后烙心,地址為0x2222膜廊,內(nèi)容相同,新的對(duì)象retain為1淫茵,舊有對(duì)象沒(méi)有變化爪瓜。
舊有對(duì)象沒(méi)有變化。
retain 到另一個(gè)NSString之后匙瘪,地址相同(建立一個(gè)指針铆铆,指針拷貝)炬转,內(nèi)容當(dāng)然相同,這個(gè)對(duì)象的retain值+1算灸,也就是說(shuō)扼劈,retain是指針拷貝,copy是內(nèi)容拷貝菲驴。在拷貝之前荐吵,都會(huì)釋放舊的對(duì)象。
assign:簡(jiǎn)單賦值赊瞬,不更改索引計(jì)數(shù)(Reference Counting)先煎。
copy:建立一個(gè)索引計(jì)數(shù)為1的對(duì)象,然后釋放舊對(duì)象
retain:釋放舊的對(duì)象巧涧,將舊對(duì)象的值賦予輸入對(duì)象薯蝎,再提高輸入對(duì)象的輸入對(duì)象的索引計(jì)數(shù)為1
使用assign:對(duì)基礎(chǔ)數(shù)據(jù)類型(NSInteger)和C數(shù)據(jù)類型(int ,float,double,char等)
使用copy:對(duì)NSString
使用retain:對(duì)其他NSObject和其子類。
阿里巴巴面試問(wèn)到assign能否用NSObject類谤绳,我一直想它的指針是怎么指的占锯,一時(shí)懵了。