1-OC與C的語法區(qū)別

1.OC語言本質

OC不是一門全新的語言,C語言的基礎上增加了一層最小的面向對象語法.

OC發(fā)明者:1986年灯谣,BradCox(布萊德·考克斯)在第一個純面向對象語言Smalltalk基礎上寫成了Objective-C語言队秩。

2.C與OC在數(shù)據(jù)類型上的差異

C語言和OC語言數(shù)據(jù)類型上的變化:

OC新增了一些數(shù)據(jù)類型:

2.1 基本數(shù)據(jù)類型 : 布爾類型(BOOL) ;這種類型只有兩個取值,真和假?

2.2 指針類型 : 類(Class)和 id類型指針,這是NSObject *OC中的對象類型;是一種動態(tài)對象類型,萬能指針

2.3 Block類型 : 代碼塊數(shù)據(jù)類型

2.4 特殊類型 : 選擇器數(shù)據(jù)類型

> 注:動態(tài)類型

> 動態(tài)類型,說簡單點就是id類型.動態(tài)類型和靜態(tài)類型相對的.像內(nèi)置的明確的基本數(shù)據(jù)類型都屬于靜態(tài)類型(int,NSString等).靜態(tài)類型在編譯的時候就能被識別出來.所以若是程序發(fā)生了類型不對應,編譯器就會發(fā)出警告. 而動態(tài)類型就編譯器編譯的時候是不能被識別的,要等到運行時(run time),即程序運行時才會根據(jù)語境來識別.所以這里面就有兩個概念要分清:編譯時和運行時.

類概念:類是用來描述對象的此疹,它是一系列方法和屬性的集合.

Objective-C的類聲明和實現(xiàn)包括兩個部分:接口部分和實現(xiàn)部分.

3.流程控制語句對比

C語言中使用的流程控制語句OC中都可以應用

OC中多了增強for循環(huán),又稱for-in循環(huán)

4.函數(shù)與方法對比

函數(shù)在文件中是平行的,沒有所屬權問題,所以可以出現(xiàn)在任何地方(不能嵌套定義!)

方法有其所屬,對象方法/類方法.

5.面向對象新增特性:繼承/封裝/多態(tài)

6.面向對象新增語法特性

屬性生成器---編譯器特性(@property,@synthesize)

分類(category)---便于給原類增加方法,及重寫方法

協(xié)議(protocol)----可以讓不同類之間共享方法

Foundation框架

7.新增異常處理

處理錯誤信息(比如程序調(diào)用一個不存在的文件,如果沒有異常處理,會出現(xiàn)閃退的狀況!)

格式:@try...@catch ...@finally

實例:

//創(chuàng)建對象dog

Dog ? *dog = [Dog new];

@try {//調(diào)用一個沒有實現(xiàn)的方法

[dog test];?

}

@catch (NSException*exception) {

NSLog(@"%@",exception.name);

}

@finally {

NSLog(@"繼續(xù)執(zhí)行!\n");

}

8.#import和#include區(qū)別

#import已默認有條件編譯功能

9.NSLog 和printf區(qū)別

NSLog是Foundation框架??供的Objective-C日志輸出函數(shù),與標準C中的printf函數(shù)類似,并可以格式化輸出

NSLog輸出的是對象(NSString類型的對象),printf輸出的是char *類型的字符串

NSLog輸出會自動換行,并且有時間戳和項目名稱.

10.如何設計一個類

定義類其實就是定義類中的成員(成員變量/成員方法),還有不要忘了類名

11.類中的消息機制:使用對象調(diào)用方法就是OC中的消息機制

消息機制與SEL:

想明白消息機制必須先知道動態(tài)綁定(dynamic binding).消息機制類似函數(shù)調(diào)用(編譯時,將函數(shù)簽名告訴編譯器就OK),所謂某對象調(diào)用某個方法,其實就是給對象發(fā)送一條消息.這時,動態(tài)綁定的特性就來了,OC可以先跳過編譯,到run time才動態(tài)添加方法調(diào)用,在運行時才決定要調(diào)什么方法,需要傳什么參數(shù)進去. 這就是動態(tài)綁定,要實現(xiàn)run time 時調(diào)用某個方法,就必須用SEL變量(有點類似函數(shù)指針)綁定一個方法. 最終通過調(diào)用該保存有某方法ID的SEL變量,實現(xiàn)方法的調(diào)用. 這是不是意味著@selector()會給某方法生成一個ID??

12.類方法的優(yōu)勢和弊端

優(yōu)勢:類名調(diào)用類方法時不需要創(chuàng)建對象,節(jié)省創(chuàng)建對象需要的時間/空間.

劣勢:由于不創(chuàng)建對象,也就意味著不能調(diào)用成員變量.

可見,類方法一般用于編寫工具類!

類方法和對象方法可以同名,這和函數(shù)很不同!!

13.對象的存儲細節(jié)

類創(chuàng)建對象,每個對象在內(nèi)存中都占據(jù)一定的存儲空間,每個對象都有一份屬于自己的單獨的成員變量,所有的對象公用類的成員方法,方法在整個內(nèi)存中只有一份,類本身在內(nèi)存中占據(jù)一份存儲空間,類的方法存儲于此。

這么來看,方法和函數(shù)一樣也是占據(jù)空間的!--->是的,占空間,在類對象內(nèi)!

isa指針和消息機制

每一個對象都包含一個isa指針.這個指針指向當前對象所屬的類招盲。

[p eat];表示給p所指向的對象發(fā)送一條eat消息,調(diào)用對象的eat方法,此時對象會順著內(nèi)部的isa指針找到存 儲于類中的方法,執(zhí)行溃肪。

可見,@selector(method)將方法包裝成一個SEL類型的ID,實質就是整型. 而p對象通過其內(nèi)的isa指針發(fā)送該消息給類對象,調(diào)用保存在其內(nèi)的對象方法.

14.方法和函數(shù)

函數(shù)屬于整個文件,可以寫在文件中的任何位置,包括@implementation...@end中,但寫在 @interface...@end會無法識別,函數(shù)的聲明可以再main函數(shù)內(nèi)部也可以在main函數(shù)外部损俭。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市亿汞,隨后出現(xiàn)的幾起案子蔫耽,更是在濱河造成了極大的恐慌,老刑警劉巖留夜,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匙铡,死亡現(xiàn)場離奇詭異,居然都是意外死亡碍粥,警方通過查閱死者的電腦和手機鳖眼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚼摩,“玉大人钦讳,你說我怎么就攤上這事≌砻妫” “怎么了愿卒?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長潮秘。 經(jīng)常有香客問我琼开,道長,這世上最難降的妖魔是什么枕荞? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任柜候,我火速辦了婚禮,結果婚禮上躏精,老公的妹妹穿的比我還像新娘渣刷。我一直安慰自己,他們只是感情好矗烛,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布辅柴。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碌嘀。 梳的紋絲不亂的頭發(fā)上涣旨,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音筏餐,去河邊找鬼开泽。 笑死,一個胖子當著我的面吹牛魁瞪,可吹牛的內(nèi)容都是我干的穆律。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼导俘,長吁一口氣:“原來是場噩夢啊……” “哼峦耘!你這毒婦竟也來了?” 一聲冷哼從身側響起旅薄,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辅髓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后少梁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洛口,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年凯沪,在試婚紗的時候發(fā)現(xiàn)自己被綠了第焰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡妨马,死狀恐怖挺举,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烘跺,我是刑警寧澤湘纵,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站滤淳,受9級特大地震影響梧喷,放射性物質發(fā)生泄漏。R本人自食惡果不足惜娇钱,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一伤柄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧文搂,春花似錦、人聲如沸秤朗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至硝皂,卻和暖如春常挚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稽物。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工奄毡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贝或。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓吼过,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咪奖。 傳聞我的和親對象是個殘疾皇子盗忱,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉至元數(shù)據(jù)結尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,715評論 0 9
  • 前言:面試筆試都是必考語法知識點羊赵。請認真復習和深入研究OC趟佃。 目錄:iOS-面試題-OC基礎篇 (1) - (84...
    麥穗0615閱讀 4,260評論 0 33
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,310評論 0 6
  • 2昧捷、#import和#include的區(qū)別是什么闲昭?#import<> 跟 #import""有什么區(qū)別? .#im...
    AlanGe閱讀 314評論 0 0
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,717評論 0 4