Objective-C

1、前言
2、熟悉Objective-C
3、頭文件的引入
4、字面量語(yǔ)法
5、多用類(lèi)型常量而不是預(yù)處理指令#define
6、巧用枚舉表示狀態(tài)、選項(xiàng)、狀態(tài)碼
多菜.jpeg

1、前言

這本書(shū)是朋友推薦的,買(mǎi)了好久了,開(kāi)始買(mǎi)的初衷就是邊學(xué)英語(yǔ)邊鞏固自己的基礎(chǔ),去年背了一年的單詞效果甚微,就想著啃一下原版書(shū)籍,誰(shuí)知道自己巨菜,大量的單詞需要查詢(xún),而且由于計(jì)算機(jī)專(zhuān)業(yè)詞匯的原因,我還要挑選不認(rèn)識(shí)單詞合適的意思,然后翻譯完自己再一句話(huà)理解一下,過(guò)程很慢很慢,去年十一點(diǎn)下班回家啃一個(gè)小時(shí)看一頁(yè),后來(lái)工作太累沒(méi)堅(jiān)持下來(lái),今年個(gè)人身體原因換了家公司,輕松了點(diǎn),就像繼續(xù)啃下去,而且想花點(diǎn)時(shí)間總結(jié)一下,希望有興趣的朋友可以一塊交流一下。

2、熟悉Objective-C

①、動(dòng)態(tài)綁定

首先Objective-C是在C的基礎(chǔ)上添加了面向?qū)ο筇卣?,而最大的特性就是消息機(jī)制,在運(yùn)行時(shí)的時(shí)候決定哪些代碼被執(zhí)行,而不是在編譯期就編譯好虛擬的表來(lái)執(zhí)行指定的代碼,而且編譯器也不用考慮所接受消息的類(lèi)型,接收消息對(duì)象的問(wèn)題也在運(yùn)行時(shí)處理。這個(gè)過(guò)程就叫做動(dòng)態(tài)綁定

②、運(yùn)行時(shí)組件

Objective-C重要工作都由運(yùn)行時(shí)組件來(lái)完成,運(yùn)行時(shí)組件本質(zhì)上是一種和開(kāi)發(fā)者所編寫(xiě)代碼連接的動(dòng)態(tài)庫(kù),所以我們只需要更換運(yùn)行時(shí)組件就能獲得性能的提升,而不是像在編譯期做大量工作的語(yǔ)言,就需要重新編譯應(yīng)用程序代碼。

③、Objective-C內(nèi)存管理

上面我們說(shuō)了OC是C演變過(guò)來(lái)的,所以C的一些特性在OC上同樣適用,而在OC上使用了引用計(jì)數(shù)來(lái)來(lái)管理內(nèi)存,我們要知道OC中的指針是用來(lái)指向?qū)ο蟮?,而且要知道?duì)應(yīng)的指針都是在棧內(nèi)存上,對(duì)象在堆內(nèi)存上,當(dāng)我們申請(qǐng)一個(gè)對(duì)象,然后再申請(qǐng)一個(gè)變量指向同一地址,那么不會(huì)拷貝該對(duì)象,只是兩個(gè)指針同時(shí)指向這個(gè)對(duì)象。

NSString *str1 = @“abc”;
NSString *str2 = str1;

上邊的例子是棧上的兩個(gè)指針指向堆上的一個(gè)@“abc”對(duì)象。這就讓我們更清楚的理解了深淺拷貝的問(wèn)題
還有需要我們注意的問(wèn)題是分配在堆上的內(nèi)存必須直接管理,分配在棧上的內(nèi)存會(huì)在棧pop出來(lái)的時(shí)候自動(dòng)的清理掉,而Objective-C把堆內(nèi)存的內(nèi)存管理抽象出來(lái)你不需要 在用malloc和free來(lái)分配和釋放對(duì)象的內(nèi)存Objective-C的運(yùn)行時(shí)通過(guò)引用計(jì)數(shù)的架構(gòu)抽象這種內(nèi)存管理。

注意:但是在Objective-C中我們可能會(huì)遇到一個(gè)變量沒(méi)有帶 * 而在存儲(chǔ)在??臻g上,這些變量不會(huì)持有Objective-C對(duì)象,很常見(jiàn)的例子就是CGRect,這是CoreGraphics框架的。

CGRect是一個(gè)C語(yǔ)言的結(jié)構(gòu)體,定義如下:

struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;

這種類(lèi)型的結(jié)構(gòu)體貫穿整個(gè)系統(tǒng)框架,這些地方如果換成Objective-C的對(duì)象會(huì)增加內(nèi)存開(kāi)銷(xiāo),

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容