OC方法和文件編譯
一、OC方法
(一)對象方法
(1)對象方法以-開頭如 -(void)xx;
(2)對象方法只能又對象來調用
(3)對象方法中可以訪問當前對象的成員變量
(4)調用格式 [對象名 對象方法名];
(5)設計一個學生類和狗類,練習對象方法的使用。
學生類的聲明:
學生類的實現:
狗類的聲明:
狗類的實現:
主程序:
(二)類方法
(1)類方法以+開頭 如+(void)put;
(2)類方法只能由類來調用
(3)類方法中不能訪問實例(成員)變量,因為類方法又類來調用,並沒有創建存儲空間來存儲類中的成員變量。
(4)調用格式:[類名 類方法名];
(5)類方法的好處和適用場合:
不依賴於對象,執行效率更高;
能用類方法解決的問題,盡量使用類方法;
場合:當方法內部不需要使用到成員變量時,可以改為類方法。
(6)設計一個計算器類,練習使用類方法。
計算器類的聲明:
計算器類的實現:
主程序:直接使用類名調用類方法
注意1:可以允許類方法和對象方法同名。
注意2:在對象方法中可以調用類方法。
(三)方法名
(1)不帶參數的方法
聲明:
調用:
(2)帶參數的方法
聲明:
調用:
注意:冒號也是方法名的一部分。
二、文件編譯
在工作中,通常把不同的類放到不同的文件中,每個類的聲明和實現分開,聲明寫在.h頭文件中,實現寫在相應的.m文件中去,類名是什么,文件名的前綴就是什么。
假設有兩個類,分別是Person類和Dog類,則通常有下面五個文件:
(1)Person.h Person類的聲明文件
(2)Person.m Person類的實現文件
(3)Dog.h Dog類的聲明文件
(4)Dog.m Dog類的實現文件
(5)Main.m 主函數(程序入口)
在主函數以及類的實現文件中要使用#import包含相應的頭文件。
補充:import有兩個作用:一是和include一樣,完完全全的拷貝文件的內容;二是可以自動防止文件內容的重復拷貝(即使文件被多次包含,也只拷貝一份)。
在使用命令行進行編譯鏈接文件的時候,通常是把.m文件單文件編譯,然后再把所有的目標文件鏈接,但是在Xcode中,是把所有的.m文件都進行編譯鏈接的,如果出現重復定義的錯誤,那大部分問題根源應該就是文件內容被重復包含或者是包含.m文件所引起的。
源文件中不論是使用include還是import,都不能包含.m或者是.c文件,只能放聲明。因此,在OC中通常把類拆分開來,拆分成聲明和實現兩個部分。
提示:這也是編程思想的一種體現,可以說.h和.m文件時完全獨立的,只是為了要求有較好的可讀性,才要求兩個文件的文件名一致,這也是把接口和實現分離,讓調用者不必去關心具體的實現細節。
Xcode是寫一行編譯一行,有簡單的修復功能,紅色是錯誤提示,黃色警告。如果在程序中聲明了一個變量,但是這個變量沒有被使用也會產生警告信息。在調試程序的時候,如果發現整個頁面都沒有報錯,但是一運行就錯誤,那么一定是鏈接報錯。