第一個OC程式

來源:互聯網
上載者:User

標籤:

第一個OC程式源碼如下:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){    @autoreleasepool{            NSLog(@"Hello,World!");    }    return 0;}

下面對這個輸出"Hello,World!"的OC程式做下介紹:

#import

#import是GCC編譯器提供的,可以保證標頭檔只被包含一次。

#import <Foundation/Foundation.h>語句告訴編譯器查看Foundation架構中的Foundation.h標頭檔。

架構

架構是一種聚集在一個單元的組件集合,包含標頭檔,庫,映像,音效檔等。

蘋果公司將Cocoa,Carbon,QuickTime和OpenGL等技術作為框架組提供。Foundation架構是處理使用者介面之下的層(layer)中的特性,例如資料結構和通訊機制。

每個架構都是一個重要的技術集合,通常包含數十個甚至上百個標頭檔。每個架構都有一個主標頭檔,它包含了該架構中的其它各個標頭檔。通過使用#import匯入主標頭檔,可以使用該架構中所有的組件。

Main函數

Main函數的兩個參數,argc表示參數(包括程式名)個數,argv是一個參數指標數組,並且每一個指標都指向一個字串,表示一個參數。argv[0]就是程式名,argv[1]才是第一個參數。

NSString *str = [NSString stringWithUTF8String:argv[0]];NSLog(@"%@",str);

輸出如下:

NSLog函數

NSLog(@"Hello,World!");

向控制台輸出”Hello,World!”,類似與C語言中的printf()。NSLog()接受一個字串作為其第一個參數,該字串可包含格式說明符(如%d)。

@符號是OC在標準C語言基礎上添加的特性之一,雙引號中的字串前有一個@符號,表示引用的字串應該作為Cocoa的NSString元素來處理。

\n 表示換行

\t 表示Tab功能

%i 表示整數

%f 表示float

%@ 表示字串

%d 表示double

%c 表示字元char

@autoreleasepool 自動釋放池

@autoreleasepool方便快捷管理記憶體的方案, 自動釋放池是OC裡面的一種記憶體回收機制,一般可以將一些臨時變數添加到自動釋放池中,統一回收釋放,當自動釋放池銷毀時,池裡面的所有對象都會調用一次release,也就是計數器會減1,但是自動釋放池被銷毀了,裡面的對象並不一定會被銷毀。

OC對象發送一條autorelease訊息,就會把這個對象添加到最近的自動釋放池中也就是棧頂釋放池中, Autorelease實際上是把對release的調用延遲了,對於每一次autorelease,系統只是把對象放入了當前的autorelease pool中,當pool被釋放時,pool中所有的對象都會被調用release。

自動釋放池可以自動追蹤需要延遲釋放的對象。

將對象添加自動釋放池維護的列表中:[object autorelease];。

當自動釋放池本身銷毀時,池子裡的所有的對象對會release。

使用來自Foundation,UIkit,AppKit等架構中的類是,也需要先建立自動釋放池,因為來自這些架構的類會建立並返回自動釋放的對象。

建立自動釋放池

//MRCNSAutoReleasePool *pool = [[NSAutoReleasePool alloc]init];…//需要釋放的對象[pool realse]//ARC@autoreleasepool{         …//需要釋放的對象}

使用自動釋放池

自動釋放池可以建立多個

多個自動釋放池形成棧式結構

對象放入最近的棧頂的自動釋放池

不要把所有的對象都放入自動釋放池,只放需要延遲釋放的對象

對於大量佔有記憶體的對象,建立就近的自動釋放池,保證它快速得到銷毀

以上就是對一個簡單的完整的OC程式的分析,如有錯誤,請批評指正。

第一個OC程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.