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