OC中的类
OC中類
OC中類的定義
在Xcode中創(chuàng)建一個(gè)新的類,會(huì)自動(dòng)給你生成兩個(gè)文件一個(gè)是.h另外一個(gè)是.m文件,你新創(chuàng)建的類默認(rèn)繼承了NSObject類,因?yàn)橛幸恍┓椒ǘ夹枰愔械姆椒ā1热鏰lloc分配內(nèi)存
OC中用來(lái)描述類的使用@interface 類名:父類來(lái)進(jìn)行定義然后用@end來(lái)定義類的結(jié)束
OC中類的實(shí)現(xiàn)
跟C++不同的一點(diǎn),OC中的類的實(shí)現(xiàn)并不能和聲明放在一起,否則編譯會(huì)報(bào)錯(cuò)。而在C++中雖然強(qiáng)調(diào)要分開(kāi)寫(xiě),但寫(xiě)到同一個(gè)文件中也并不會(huì)出錯(cuò),而在OC中就不是這樣
OC中新開(kāi)一個(gè)文件用來(lái)進(jìn)行類的實(shí)現(xiàn),用@implementation 類名開(kāi)始進(jìn)行實(shí)現(xiàn),用@end對(duì)實(shí)現(xiàn)進(jìn)行結(jié)束標(biāo)記
類的方法
對(duì)于每一個(gè)類都有靜態(tài)方法(對(duì)于類的方法)和動(dòng)態(tài)方法(對(duì)于對(duì)象的方法),C++中調(diào)用靜態(tài)方法用的是類作用域運(yùn)算符::去進(jìn)行調(diào)用,對(duì)于動(dòng)態(tài)方法通過(guò)->或者.兩個(gè)運(yùn)算法來(lái)進(jìn)行調(diào)用
而在OC中調(diào)用相應(yīng)的方法都是通過(guò)消息發(fā)送,也就是[]這個(gè)運(yùn)算符
自定義構(gòu)造方法
一般我們使用的init方法是編譯器默認(rèn)的一種動(dòng)態(tài)方法,會(huì)給對(duì)象初始化為0,而有些時(shí)候我們需要初始化后進(jìn)行賦值,所以此時(shí)就需要重寫(xiě)init方法
重寫(xiě)init方法
打印對(duì)象信息時(shí)的description方法
關(guān)于多文件編譯
OC中可以有多個(gè).h和.m文件,但入口函數(shù)都是main函數(shù),而且OC中沒(méi)有命名空間,所以兩個(gè)文件中的類名是可能重名的,所以我們盡可能命名使類名不能出現(xiàn)重名的情況。
點(diǎn)語(yǔ)法
C++中如果定義了對(duì)象,可以通過(guò)對(duì)象名.的方式對(duì)對(duì)象中屬性進(jìn)行操作,在OC中也提供了這種類似的方式
OC中的點(diǎn)語(yǔ)法要去使用的話,必須要有相應(yīng)的set方法且set方法設(shè)置的屬性必須與點(diǎn)語(yǔ)法后的屬性名匹配
@propety
在寫(xiě)OC中如果給每個(gè)屬性都寫(xiě)上get和set方法,顯得代碼太過(guò)于冗余,可以使用@propety來(lái)定義成員變量,這樣編譯器就可以自動(dòng)為我們進(jìn)行set方法和get方法的聲明
如果在有很多的成員變量例如如下情況
@interface Property : NSObject{int age;int age1;int age2; }那么使用@propety默認(rèn)聲明與其同名的成員變量的set和get方法
使用@propety聲明變量后編譯器自動(dòng)幫助我們聲明成員變量,我們就不用再手動(dòng)聲明變量。自動(dòng)生成的變量為私有的.
@synthesize 實(shí)現(xiàn)的成員變量如果沒(méi)有顯示定義,則會(huì)隱式創(chuàng)建一個(gè)與其名稱相同的變量,若是想要其生成的方法是我顯示定義的方法,則需指定實(shí)現(xiàn)具體的哪個(gè)變量
目前版本中,一但使用@propety聲明了變量,編譯器會(huì)自動(dòng)幫助我們生成@synthesize,自動(dòng)幫我們實(shí)現(xiàn)
如果我們覺(jué)的編譯器幫助我們生成的方法并不符合我們的預(yù)期,那么我們可以自己實(shí)現(xiàn)相應(yīng)的get方法和set方法,編譯器就不會(huì)再幫我們實(shí)現(xiàn)了,如果我們只想要get或者set兩者中的任意一個(gè)的話,我們只需要實(shí)現(xiàn)其中的任意一個(gè)就行,另外一個(gè)編譯器依舊會(huì)幫助我們實(shí)現(xiàn)
總結(jié)
- 上一篇: 成都大熊猫繁育基地地铁怎么走
- 下一篇: OC中的基本容器和基本数据类型