簡介
創建在C語言之上,能夠混編C/C++代碼,編寫一個類須要二個文件:objective-c
.h的頭文件app
.m的實現文件(若是是C/C++混編文件,文件後綴爲.mm)函數
既然有頭文件,因此不少人會拿它與C++進行類比,它最重要的三個特性是:Message、Category、Protocol,與C++類比,兩者之間的不一樣:學習
一、它沒有new也沒有delete,但有相似的方法alloc、dealloc;this
二、不支持多繼承,只支持單繼承,可是提供了Protocol;spa
三、它沒有命名空間;code
四、不支持內聯函數;blog
五、不支持參數默認值;繼承
C++太過龐大,因此拿兩者比較其實不是特別合適,跟Java相比,我以爲可能更適合一些吧ip
快速入門
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) 基本數據類型
OC創建在C語言之上,因此C中的全部基本數據類型它都支持,好比:int、float、char…
OC自身定義的數據類型,都包含在Foundation中了,類名以NS開頭,好比:NSArray、NSInteger、NSNumber,定義:NSString *myStr;