第一條 了解OC語言

2021-09-25 14:25:18 字數 2122 閱讀 5123

objective-c使用動態繫結的訊息結構;

理解c語言的核心概念(記憶體模型和指標)有助於寫好oc程式。

多型:不同物件以自己的方式響應相同的訊息的能力叫做多型。

由於oc的動態特性,在oc中其實很少提及「函式」的概念,傳統的函式一般在編譯時就已經把引數資訊和函式實現打包到編譯後的原始碼中了,而在oc中最常使用的是訊息機制。呼叫乙個例項的方法,所做的是向該例項的指標傳送訊息,例項在收到訊息後,從自身的實現中尋找響應這條訊息的方法。

//在這段c++**中 無法在編譯器給testfunc函式指標繫結確定的函式 要等到執行的時候才知道繫結哪個

int func1(){

cout<<"this is func01"<>num;

if (num==1) testfunc = func2;

else testfunc = func1;

cout<<"funcnum is "<<(*testfunc)()《說到動態繫結就不得不提到三個概念:動態型別 動態繫結 動態載入

動態型別的意思簡單來說就是 id 型別,通用指標型別,有點類似於c語言中的void*。但是id型別在編譯器不會進行型別檢查,等到執行期才會檢查物件的具體型別。

動態繫結的意思簡單來說就是@selector,objective-c在編譯的時候,會根據方法的名字 (包括引數序列),生成乙個用來區分這個方法的唯一的乙個標示(id),這個標示(id)就是sel型別的,在執行時候是通過方法的標示來查詢方法的。只要方法的名字(包括引數序列)相同,那麼它們的 id都是相同的。可以通過指示符獲得方法的標示。sel myfunc =@selector(...);

在某個例項物件被確定後,其型別便被確定了。該物件對應的屬性和響應的訊息也被完全確定。在物件所屬類確定後,將某些屬性和相應的方法繫結到物件上。這裡所指的屬性和方法當然包括了原來沒有在類中實現的,而是在執行時才需要的新加入的。

動態載入就是,根據需求載入所需要的資源,基本就是根據不同的機型做適配。

在c語言中,定義了4個記憶體區間:**區;全域性變數與靜態變數區;區域性變數區即棧區;動態儲存區,即堆區。下面分別對這4個區進行介紹。

**區。**區中主要存放程式中的**,屬性是唯讀的。

全域性變數與靜態變數區。也稱為靜態儲存區域。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如:全域性變數、靜態變數和字串常量。分配在這個區域中的變數,當程式結束時,才釋放記憶體。因此,經常利用這樣的變數,在函式間傳遞資訊。

棧區。在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上創

建,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。在linux系統中,通過命令「ulimit –s」,可以看到,棧的容量為8192kbytes,即8m。

這種記憶體方式,變數記憶體的分配和釋放都自動進行,程式設計師不需要考慮記憶體管理的問題,很方便使用。但缺點是,棧的容量有限制,且當相應的範圍結束時,區域性變數就不能在使用。

堆區。有些操作物件只有在程式執行時才能確定,這樣編譯器在編譯時就無法為他們預先分配空間,只能在程式執行時分配,所以稱為動態分配。

具體看這裡。

還有這個。

c程式設計中使用指標,可以使程式簡潔、緊湊、高效;有效地表示複雜的資料結構;實現動態分配記憶體;得到多於乙個的函式返回值。隨著讀者對本書內容的學習,會逐漸體會到指標的好處。首先介紹指標的基礎知識。

在計算機內部儲存器(簡稱記憶體)中,每乙個位元組單元,都有乙個編號,稱為位址。在這裡,讀者可以把計算機的記憶體看做是一條街道上的一排房屋,1個位元組算乙個房屋,每個房屋都可以容納8位元資料,每個房屋都有乙個門牌號用來標識自身的位置。這個門牌號就相當於記憶體的編號,就是位址。

在前面的內容裡,已經提到過指標的概念,簡單地說,記憶體單元的位址稱為指標。專門用來存放位址的變數,稱為指標變數(pointer variable)。在不影響理解的情況下,有時對位址、指標和指標變數不區分,通稱指標。

具體看的好文章在這裡。

第一條部落格

第一條部落格 csdn的這個markdown看起來好高大上啊,但是看不懂啊.本部落格是記錄dsp相關數字電源部分的學習的,這是我的第一條csdn部落格,第一次接觸csdn是在初中的時候到現在大學畢業工作第一年已有十年有餘。大學四年在遊戲中虛度,大三下學期開始接觸開關電源,本身學校普通不能再普通的本科...

第一條CSDN部落格!

第一條csdn部落格!你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣...

判斷第一條或最後一條記錄

標籤具有以下一些屬性 var 迭代引數的名稱。在迭代體中可以使用的變數的名稱,用來表示每乙個迭代變數。型別為string。items 要進行迭代的集合。對於它所支援的型別將在下面進行講解。varstatus 迭代變數的名稱,用來表示迭代的狀態,可以訪問到迭代自身的資訊。begin 如果指定了item...