歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Objective-C語言和IOS系統(簡介,語法,系統結構)

Objective-C語言和IOS系統(簡介,語法,系統結構)

日期:2017/3/1 10:19:47   编辑:Linux編程

簡介

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例子可以這麼寫:

  1. #import <Foundation/Foundation.h>
  2. int main(int argc, char *argv[]){
  3. @autoreleasepool{
  4. NSLog(@"Hello World!");
  5. }
  6. return 0;
  7. }
那 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如下

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

IOS的系統結構

系統結構,從底層到最頂層分為四層,如下圖:

1、核心操作系統層, Core OS


2、核心服務層 Core Services



3、媒體層 Media

4、Cocoa Touch層

Copyright © Linux教程網 All Rights Reserved