Objective-C語言與iOS系統

OBJ C語言、iOS 系統結構
服務器君一共花費了119.274 ms進行了5次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

Objective-C,是擴充C的面向對象編程語言。它主要使用于Mac OS Objective-C,通常寫作ObjC和較少用的Objective C或Obj-C,是在C的基礎上,加入面向對象特性擴充而成的編程語言。目前, Objective-C主要應用于Mac OS X和iOS這兩個NeXTSTEP的衍生系統,而在NeXTSTEP和OpenStep中它更是基本語言。Objective-C可以在任何gcc支持的平臺上進行編譯,因為gcc原生支持Objective-C。

Objective-C的歷史

1980年代初,布萊德·確斯(Brad Cox)在其公司Stepstone發明Objective-C,它以一種叫做SmallTalk-80的語言為基礎。Objective-C建立在C語言之上,意味著它是在C語言基礎上添加了擴展而創造出來的能夠創建和操作對象的一門新的程序設計語言。對Objective-C最主要的描述是他1986年出版的《Object-oriented Programming, An Evolutionary Approach》。1988年,NeXT Software公司獲得了Objective-C語言的授權,并開發出了Objective-C的語言庫和一個名為NEXTSTEP的開發環境。1992年,自由軟件基金會的GNU開發環境增加了對Objective-C的支持。1994年,NeXT Computer公司和升陽微系統(Sun Microsystem)聯合發布了一個針對NEXTSTEP系統的標準典范,名為OPENSTEP。OPENSTEP在自由軟件基金會的實現名稱為GNUStep。1996年12月20日,蘋果公司宣布收購NeXT Software公司,NEXTSTEP/OPENSTEP環境成為蘋果操作系統下一個主要發行版本OS X的基礎。這個開發環境的該版本被蘋果公司稱為Cocoa。?

IOS的歷史

蘋果公司最早于2007年1月9日的Macworld大會上公布這個系統,最初是設計給iPhone使用的,后來陸續套用到iPod touch、iPad以及Apple TV等蘋果產品上。iOS與蘋果的Mac OS X操作系統一樣,它也是以Darwin為基礎的,因此同樣屬于類Unix的商業操作系統。原本這個系統名為iPhone OS,直到2010年6月7日WWDC大會上宣布改名為iOS?

Objective-C的語法

Objective-C是C語言的嚴格母集合,意指任何原始的C語言程式都可以通過Objective-C編譯器而不需修改,也允許 Objective-C 使用任何原始的C語言代碼。Objective-C 形容自己為覆蓋于C語言上的一層薄紗,這是因為Objective-C的原意就是在原始C語言主體上加入面向對象的特性。Objective-C的面向對象語法源于Smalltalk訊息傳遞風格。所有其他非面向對象的語法,包括變量型別,前處理器(preprocessing),流程控制,函數聲明與調用皆與C語言完全一致。?

Hello World

咱們看看Hello ?World實例。

新版本的Xcode 4.3.1下的helloworld例子可以這么寫:

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

那?autoreleasepool這個是做什么用的呢?

簡單的說,每次事件處理時候開始的時候,ios會為我們自動生成一個autorelesepool,結束的時候釋放掉。對于每一個Runloop, 系統會隱式創建一個Autorelease pool,這樣所有的release pool會構成一個象CallStack一樣的一個棧式結構,在每一個Runloop結束時,當前棧頂的Autorelease pool會被銷毀,這樣這個pool里的每個Object會被release。

那什么是一個Runloop呢? 一個UI事件,Timer call, delegate call, 都會是一個新的Runloop。Autorelease是保證一個method安全的,對于method中的函數調用也適用。

舊版本的hellowold如下:

#import <Foundation/Foundation.h>
 
int main(int argc, char *argv[]){
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 
    NSLog(@"Hello World!");
 
    [pool drain];
    return 0;
}

IOS的系統結構

系統結構,從底層到最頂層分為四層:核心操作系統層,Core OS,核心服務層 Core Services,媒體層 Media、Cocoa Touch層。

iOS 系統結構(點擊查看大圖)

本文地址:http://www.zqhthc.tw/librarys/veda/detail/2062,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.zqhthc.tw/librarys/veda/detail/2062

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《鏈接器和加載器》 萊文(John R.Levine) (作者), 李勇 (譯者)

《鏈接器和加載器》講述構建程序的關鍵工具——鏈接器和加載器,內容包括鏈接和加載、體系結構、目標文件、存儲分配、符號管理、庫、重定位、加載和覆蓋、共享庫、動態鏈接和加載、動態鏈接的共享庫,以及著眼于成熟的現代鏈接器所做的一些變化;并介紹一個持續的實踐項目,即使用Perl語言開發一個可用的小鏈接器。《鏈接器和加載器》適合高校計算機相關專業的學生、實習程序員、語言設計者和開發人員閱讀參考。

更多計算機寶庫...

英超直播吻球网