標籤:
簡介
建立在C語言之上,可以混編C/C++代碼,編寫一個類需要二個檔案:
.h的標頭檔
.m的實現檔案(如果是C/C++混編檔案,檔案尾碼為.mm)
既然有標頭檔,所以很多人會拿它與C++進行類比,它最重要的三個特性是:Message、Category、Protocol,與C++類比,二者之間的不同:
1、它沒有new也沒有delete,但有類似的方法alloc、dealloc;
2、不支援多繼承,只支援單繼承,但是提供了Protocol;
3、它沒有命名空間;
4、不支援內嵌函式;
5、不支援參數預設值;
C++太過龐大,所以拿二者比較其實不是特別合適,跟Java相比,我覺得可能更適合一些吧
快速入門
1) 類的定義
.h標頭檔
@interface Hello : NSObject
@end
.m實現檔案
#include "Hello.h"
@implementationFraction
@end
通常我們定義一個類,都會讓它繼承自NSObject。有人會問NSObject後面的{}怎麼省略了,因為我沒有定義“實現變數”所以就把它省略了。
因為OC不提供命名空間,所以類命名上要特別注意了,不然很容易覆蓋/衝突而導致很多未知的問題。蘋果定義的類,一般類名最前面有二個字母,比如NSObject中的NS,UIKit中的UI,所以為了避免跟蘋果定義的類產生衝突,自訂的類以三個字母開頭,比如BNR這樣 2) 方法的定義和調用 方法分二種:執行個體方法、類方法,如所示,區別類方法和執行個體方法,主要是它的聲明符:-、++ (傳回值類型) 類方法名- (傳回值類型) 執行個體方法名,需要先建立後再使用,比如這樣:[[[Hello alloc] init] methodName]; 無論是哪種方法,調用都是使用中括弧“[]”,方法的準確來講應該稱為發訊息,它有三個要素:receiver(訊息接收方)selector(選取器,通常指方法名)arguments(實參) 通常類中調用自身的方法,用[self xx],self是一個隱式的局部變數,不需要聲明self,程式自動會為self賦值,把它當作JavaScript中的this就好理解了。
OC中預設所有的方法都是公開的,所以如果你想定義一個私人方法,不需要在.h中聲明方法,直接在.m中定義方法就好,但是建議使用p_開頭,這樣避免與蘋果中定義的一些私人方法名產生衝突。 3) 基礎資料型別 (Elementary Data Type) OC建立在C語言之上,所以C中的所有基礎資料型別 (Elementary Data Type)它都支援,比如:int、float、char…OC自身定義的資料類型,都包含在Foundation中了,類名以NS開頭,比如:NSArray、NSInteger、NSNumber,定義:NSString *myStr; 更多關於Objective-C的學習資料,推薦 Ry’s Objective-C Tutorial
Objective-C 入門筆記