1.OC相對(duì)于C做了什么事情??
a.在C語(yǔ)言的基礎(chǔ)上新增了一小部分面向?qū)ο蟮恼Z(yǔ)法.?
b.將C語(yǔ)言復(fù)雜的启涯、繁瑣的、可惡的語(yǔ)法封裝的更為簡(jiǎn)單.
c.OC完全兼容C語(yǔ)言,可以在OC中寫(xiě)C語(yǔ)言代碼.
2.OC程序的源文件的后綴名是.m文件, m的意思是message,代表OC中最重要的機(jī)制消息機(jī)制,而C語(yǔ)言的源文件的后綴名是.c文件.
3.main函數(shù)依然還是程序的入口和出口. int 類型的返回值,代表程序的結(jié)束狀態(tài), 返回0代表程序結(jié)束.?
4.main函數(shù)的參數(shù) : 仍然可以接受用戶在運(yùn)行程序的時(shí)候傳遞數(shù)據(jù)給程序,參數(shù)也可以不要.
5.#import指令:以#開(kāi)頭,說(shuō)明它是預(yù)處理指令,它是#include指令的增強(qiáng)版,將文件的內(nèi)容在預(yù)編譯的時(shí)候拷貝到指定的地方.
增強(qiáng)在什么地方岸售? 如果使用#include指令導(dǎo)入頭文件要實(shí)現(xiàn)不重復(fù)包含的效果,必須要配合條件編譯指令來(lái)實(shí)現(xiàn).而使用#import指令導(dǎo)入頭文件無(wú)論多少次,只會(huì)包含一次,#import指令在包含文件的時(shí)候,底層會(huì)先判斷這個(gè)文件是否被包含,如果被包含就會(huì)略過(guò),否則才會(huì)包含.
6.框架是一個(gè)功能集 蘋(píng)果或者第三方事先一些功能封裝好在一個(gè)一個(gè)的類或者函數(shù)中,這些函數(shù)和類的集合就叫做框架.
Foundation框架:這個(gè)框架中提供了一些最基礎(chǔ)的功能,就比如 一些最常用的類痊臭、 數(shù)據(jù)類型、輸入和輸出 等等.
7.NSLog打印函數(shù),它是printf的加強(qiáng)版.
8.OC中設(shè)計(jì)了1個(gè)更為好用的用來(lái)存儲(chǔ)字符串的一個(gè)類型,NSString 字符串, 字符串前帶@就是OC字符串,沒(méi)有的話是C字符串.
9.OC中增加了很多由@符號(hào)開(kāi)頭的關(guān)鍵字.
10.OC程序的編譯停局、連接很钓、執(zhí)行.
1).在.m文件中寫(xiě)上符合OC語(yǔ)法規(guī)范的源代碼.
2).使用編譯器將源代碼編譯為后綴名為.o的目標(biāo)文件.
cc -c xx.m
a.預(yù)處理
b.檢查語(yǔ)法
c.編譯?
3).鏈接?
與C語(yǔ)言不同的是 在這里有一個(gè)注意點(diǎn)就是 如果程序中使用到了哪個(gè)框架中的的功能或者類,那么在鏈接的時(shí)候,就必須告訴編譯器去哪一個(gè)框架中找這個(gè)功能或者類.
cc xx.o -framework框架名稱.?
4).鏈接成功之后,就會(huì)生成一個(gè)a.out可執(zhí)行文件.
11.OC中的數(shù)據(jù)類型.?
包括C語(yǔ)言中所有的數(shù)據(jù)類型
1).a.基本數(shù)據(jù)類型: int、double董栽、float码倦、char? b.構(gòu)造類型:數(shù)組、結(jié)構(gòu)體锭碳、枚舉? c.指針類型:int*袁稽、char*? d.空類型void e.typedef自定義類型.
2).新增的類型?
a.BOOL類型存儲(chǔ)YES NO .
b. Boolean類型存儲(chǔ)ture false.?
兩個(gè)其實(shí)是一個(gè)意思 ,目的是為了吸引其他語(yǔ)言開(kāi)發(fā)人來(lái)開(kāi)發(fā)OC程序,比如JAVA就有Boolean這個(gè)數(shù)據(jù)類型,C#里面就有BOOL這個(gè)類型.?
3).class類型.類
4). id類型.萬(wàn)能指針
5).nil與NULL
7).SEL方法選擇器
8).block
12.OC支持C所有的運(yùn)行符 擒抛、OC支持C所有的控制語(yǔ)句运提、OC支持C所有的關(guān)鍵字,并新增了一些關(guān)鍵字,OC新增的關(guān)鍵字絕大多數(shù)都是@符號(hào)開(kāi)頭蝗柔,@interface @implement @public …?
函數(shù)的定義和調(diào)用也與C語(yǔ)言的完全一致.