OC-類,oc類方法
1、關於標頭檔
#include <stdio.h>
#import <Foundation/Foundation.h>
區別:#import指令匯入更快更有效率。#include指令告訴編譯器做呆板的複製粘貼,將包含的內容粘貼到目標檔案中來。而#import則會先檢查之前是否已經匯入過這個檔案或是已經包含到目標檔案中了。
再仔細觀察兩個標頭檔名
Foundation.h我們稱之為主標頭檔, 主標頭檔中又拷貝了該工具箱中所有工具的標頭檔, 我們只需要匯入主標頭檔就可以使用該工具箱中所有的工具, 避免了每次使用都要匯入一個對應的標頭檔。
規律: 所有的主標頭檔的名稱都和工具箱的名稱一致
所有的主標頭檔都是匯入了該工具箱中所有工具的標頭檔
2、第一個oc程式
1 /* 2 因為OC完全相容C, 所以可以在OC程式中編寫C語言代碼 3 並且可以將C語言的源檔案和OC的源檔案組合在一起產生可執行檔 4 */ 5 #import <Foundation/Foundation.h> 6 int main(int argc, const char * argv[]) { 7 printf("c hello world\n"); 8 /* 9 printf和NSLog的區別:10 NSLog會自動換行11 NSLog在輸出內容時會附加一些系統資訊12 NSLog和printf接收的參數不一樣13 */14 NSLog(@"OC hello World");15 16 return 0;17 }
3、oc類
C語言中函數分為聲明和實現,OC中定義一個類也分為聲明和實現
1)類聲明
// 以@interface開頭 , 以@end結尾, 然後再class name對應的地方寫上 事物名稱, 也就是類名即可// 聲明一個類的目的就是為了告訴系統, 我們這個類中有哪些屬性和行為// OC類聲明中屬性只能在寫@interface和@end之間的{}中@interface Person : NSObject{ //注意: 預設情況下, OC對象中的屬性是不能直接存取的 int _height; // 注意: 編寫OC類屬性的時, 建議將所有屬性的名稱前面都加上_ int _weight; int _age;}// 行為@end
2)類實現
// 以@implementation開頭, 以@end結尾, 然後在class對應的地方寫上聲明時聲明的類的名稱, 須和聲明的類名相同@implementation Person// 行為的實現@end
3) 方法的聲明和實現
@interface Person : NSObject{ //此處代碼省略}// 行為/* OC中的行為和C語言中的函數一樣, 都是用來儲存一段特定功能的代碼 C語言中定義一個函數, 分為聲明和實現, 聲明寫在.h中, 實現寫在.c中 OC中定義一個方法, 也分為聲明和實現, 聲明寫在@interface中, 實現寫在@implementation C語言的函數分為兩種: 內建函式和外部函數 OC中的方法也分為兩種; 類方法和對象方法 類方法只能用類名調用, 對象方法只能用對象調用 OC中的類方法用+表示, OC中的對象方法用-表示 編寫OC方法的規律和C語言一模一樣: 1.確定函數名稱 2.確定形參 3.確定傳回值 4.確定傳回值類型*/// 注意: OC中的方法, 如果沒有形參不需要寫(), 而是直接寫一個;OC方法中的()是放資料類型的- (void)about;@end// 類的實現@implementation Person// 行為的實現- (void)about{ NSLog(@"此人資訊");}@end
4)main函數
int main(int argc, const char * argv[]) { // 在OC中想要通過一個類來建立一個對象, 必須給類發送一個訊息 // 發送訊息的文法是 [類名稱/對象名稱 方法名稱]; /* 只要通過一個類調用類的new方法, 也就是給類發送一個叫做new的訊息之後 系統建立對象的過程如下 1. 為Person類建立出來得對象分配儲存空間 2. 初始化Person類建立出來的對象中的屬性 3. 返回Person類建立出來的對象對應的地址 */ // 通過一個Person類型的指標接收了 Person對象的地址 // 利用Person類型的指標儲存了Person對象的地址, 那麼我們就稱Person類型的指標p之為Person對象 // OC中的類其實本質就是一個結構體, 所以p這個指標其實就是指向了一個結構體 Person *p = [Person new]; // p->_height= 70; c語言中我們可以這樣做,但是在oc中不允許直接存取成員變數,
[p about]; //調用對象方法
return 0;}
最後說一下Objective-C命名規則
指向執行個體的變數使用"駱駝拼字法(camel case)"來命名。以小寫字母開頭,接下來每個單詞的第一個字母使用大寫。
方法的命名也是用駱駝拼字法。
類的名稱以大寫字母開頭,但是接下來的單詞繼續使用駱駝拼字法。