1、關於頭文件 #include <stdio.h> #import <Foundation/Foundation.h> 區別:#import指令導入更快更有效率。#include指令告訴編譯器做呆板的複製粘貼,將包含的內容粘貼到目標文件中來。而#import則會先檢查之前是否已經導入過這個文件或是
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)"來命名。以小寫字母開頭,接下來每個單詞的第一個字母使用大寫。
方法的命名也是用駱駝拼寫法。
類的名稱以大寫字母開頭,但是接下來的單詞繼續使用駱駝拼寫法。