偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

簡介Objective-C語言

移動開發(fā) iOS
Objective-C,是擴(kuò)充C的面向?qū)ο缶幊陶Z言。主要使用于Mac OS X和GNUstep這兩個使用OpenStep標(biāo)準(zhǔn)的系統(tǒng),而在NeXTSTEP和OpenStep中它更是基本語言。Objective-C可以在gcc運(yùn)作的系統(tǒng)寫和編譯,因?yàn)間cc含Objective-C的編譯器。

Objective-C,通常寫作ObjC和較少用的Objective C或Obj-C,是擴(kuò)充C的面向?qū)ο缶幊陶Z言。它主要使用于Mac OS X和GNUstep這兩個使用OpenStep標(biāo)準(zhǔn)的系統(tǒng),而在NeXTSTEP和OpenStep中它更是基本語言。Objective-C可以在gcc運(yùn)作的系統(tǒng)寫和編譯,因?yàn)間cc含Objective-C的編譯器。1980年代初布萊德·確斯(Brad Cox)在其公司Stepstone發(fā)明Objective-C。他對軟件設(shè)計(jì)和編程里的真實(shí)可用度問題十分關(guān)心。Objective-C最主要的描述是他1986年出版的Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.

優(yōu)點(diǎn)及缺點(diǎn)

Objective-C是非常“實(shí)際”的語言。它使用一個用C寫成、很小的運(yùn)行庫,只會令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個窗口的情況相反。   Objective-C的最初版本并不支持垃圾回收。在當(dāng)時這是爭論的焦點(diǎn)之一,很多人考慮到Smalltalk回收時有漫長的“死亡時間”,令整個系統(tǒng)失去功用。Objective-C為避免此問題才不擁有這個功能。雖然某些第三方版本已加入這個功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入這個功能。   另一個問題是ObjC不包括命名空間機(jī)制(namespace mechanism)。取而代之的是程序設(shè)計(jì)師必須在其類別名稱加上前綴,時常引致沖突。在2004年,在Cocoa編程環(huán)境中,所有Mac OS X類別和函式均有“NS”作為前綴,例如NSObject或NSButton來清楚分別它們屬于Mac OS X核心;使用“NS”是由于這些類別的名稱在NeXTSTEP開發(fā)時定下。   雖然Objective-C是C的母集,但它也不視C的基本型別為***級的對象。   和C++不同,Objective-C不支援運(yùn)算子多載(它不支持ad-hoc多型)。亦與C++不同,但和Java相同,Objective-C只容許對象繼承一個類別(不設(shè)多重繼承)。Categories和protocols不但可以提供很多多重繼承的好處,而且沒有很多缺點(diǎn),例如額外執(zhí)行時間過重和二進(jìn)制不兼容。

Objective-C 排行榜

TIOBE 2010 5月編程語言榜已于近日發(fā)布,本期主要變化是Objective-C排名進(jìn)入前十。盡管Objective-C的份額在上個月只達(dá)到0.08%,但卻在排名上邁出了重要一步——***進(jìn)入前十名。這一步的意義重大,要知道,2001年6月TIOBE編程榜發(fā)布以來,總體只有13個編程語言曾經(jīng)進(jìn)入前十名。   Objective-C流行的主要原因可能是它是***一種可以為iphone和ipad編程的語言。但單從編程語言的角度來看,誕生于1986年的Object-c并沒有表現(xiàn)出多少新意。

TIOBE 2010年6月份編程語言榜已于近日發(fā)布,Objective-C排名繼續(xù)爬升,從第10名上升到第9名。由此可見,Objective-C具有很大的發(fā)展空間。

Objective-C和C++的比較

單一繼承:

Objective-C不支持多重繼承,(同Java和Smalltalk),而C++語言支持多重繼承。

動態(tài):

Objective-C是動態(tài)定型(dynamicaly typed)所以它的類庫比C++要容易操作。Objective-C 在運(yùn)行時可以允許根據(jù)字符串名字來訪問方法和類,還可以動態(tài)連接和添加類。

C++ 跟從面向?qū)ο缶幊汤锏腟imula 67(一種早期OO語言)學(xué)派,而Objecive-C屬于Smalltalk學(xué)派。

在C++里,對象的靜態(tài)類型決定你是否可以發(fā)送消息給它,而對Objective-C來說,由動態(tài)類型來決定。Simula 67學(xué)派更安全,因?yàn)榇蟛糠皱e誤可以在編譯時查出。 而Smalltalk學(xué)派更靈活,比如一些Smalltalk 看來無誤的程序拿到Simualr 67那里就無法通過。

從很多方面來看,C++和Objective-C的差別,與其說時技術(shù)上的, 不如說是思維方式上的。你是否想更安全而舍棄靈活性?Simular67學(xué)派的支持者聲稱既然程序設(shè)計(jì)出色何必再要靈活性,而 Smalltalk學(xué)派則辯稱為了靈活可以容忍運(yùn)行時多出錯。

Objective-C簡明教程

前言

◆開始學(xué)習(xí)前,假設(shè)你已經(jīng)具備了一些C語言的基礎(chǔ)知識,包括變量類型、函數(shù)、返回值、以及指針的相關(guān)概念。如果對這些還不了解,建議首先學(xué)習(xí)譚浩強(qiáng)的《C程序設(shè)計(jì)》。

◆Objective-C,是 C 的衍生體,繼承了所有 C 語言的特性。是有一些例外,但是它們不是繼承于 C 的語言特性本身。

◆nil:在 C/C++ 你或許曾使用過 NULL,而在 Objective-C 中則是 nil。不同之處是你可以傳遞訊息給 nil(例如 [nil message];),這是完全合法的,然而你卻不能對 NULL 如法炮制。

◆BOOL:C 沒有正式的布爾類型,而在 Objective-C 中也不是「真的」有。它是包含在 Foundation classes(基本類別庫)中(即 import NSObject.h;nil 也是包括在這個標(biāo)頭檔內(nèi))。BOOL 在 Objective-C 中有兩種型態(tài):YES 或 NO,而不是 TRUE 或 FALSE。

◆#import vs #include:就如同你在 hello world 范例中看到的,我們使用了 #import。#import 由 gcc 編譯器支援。我并不建議使用 #include,#import 基本上跟 .h 檔頭尾的 #ifndef #define #endif 相同。許多程式員們都同意,使用這些東西這是十分愚蠢的。無論如何,使用 #import 就對了。這樣不但可以避免麻煩,而且萬一有一天 gcc 把它拿掉了,將會有足夠的 Objective-C 程式員可以堅(jiān)持保留它或是將它放回來。偷偷告訴你,Apple 在它們官方的程式碼中也使用了 #import。所以萬一有一天這種事真的發(fā)生,不難預(yù)料 Apple 將會提供一個支援 #import 的 gcc 分支版本。

◆ Objective-C 中, method 及 message 這兩個字是可以互換的。不過 messages 擁有特別的特性,具體區(qū)別在後面介紹。

編譯 hello world

  1. hello.m 
  2.  
  3. #import 
  4.  
  5. int main( int argc, const char *argv[] ) { 
  6.  
  7. printf( "hello world\n" ); 
  8.  
  9. return 0; 
  10.  

◆輸出

hello world

◆ 在 Objective-C 中使用 #import 代替 #include

◆ Objective-C 的預(yù)設(shè)副檔名是 .m

創(chuàng)建 classe

@interface

◆基于 "Programming in Objective-C," Copyright (C) 2004 by Sams Publishing 一書中的范例,并經(jīng)過允許而刊載。

  1. Fraction.h 
  2.  
  3. #import 
  4.  
  5. @interface Fraction: NSObject { 
  6.  
  7. int numerator; 
  8.  
  9. int denominator; 
  10.  
  11.  
  12. -(void) print; 
  13.  
  14. -(void) setNumerator: (int) n; 
  15.  
  16. -(void) setDenominator: (int) d; 
  17.  
  18. -(int) numerator; 
  19.  
  20. -(int) denominator; 
  21.  
  22. @end 

◆NSObject:NeXTStep Object 的縮寫。因?yàn)樗呀?jīng)改名為 OpenStep,所以這在今天已經(jīng)不是那麼有意義了。

◆繼承(inheritance)以 Class: Parent 表示,就像上面的 Fraction: NSObject。

◆夾在 @interface Class: Parent { .... } 中的稱為 instance variables。

◆沒有設(shè)定存取權(quán)限(protected, public, private)時,預(yù)設(shè)的存取權(quán)限為 protected。設(shè)定權(quán)限的方式將在稍後說明。

◆Instance methods 跟在成員變數(shù)(即 instance variables)後。格式為:scope (returnType) methodName: (parameter1Type) parameter1Name;scope 有class 或 instance 兩種。

◆instance methods 以 - 開頭,class level methods 以 + 開頭。

◆Interface 以一個 @end 作為結(jié)束。

原生的Hello World代碼

  1.  #import 
  2.  
  3. int main (int argc, const char * argv[]) { 
  4.  
  5. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
  6.  
  7. // insert code here... 
  8.  
  9. NSLog(@"Hello, World!"); 
  10.  
  11. [pool drain]; 
  12.  
  13. return 0; 
  14.  
  15.  } 

以上是Xcode開發(fā)環(huán)境下默認(rèn)的.m文件內(nèi)容,就是原生的Hello World范例代碼。

關(guān)于hello world的更多擴(kuò)展內(nèi)容

在 Objective-C 中 #import 和 #include 的區(qū)別

在 Objective-C 中,#import 被當(dāng)成 #include 指令的改良版本來使用。除此之外,#import 確定一個文 件只能被導(dǎo)入一次,這使你在遞歸包含中不會出現(xiàn)問題。使用哪一個還是由你來決定。一般來說,在導(dǎo)入 Objective-C 頭文件的時候使用 #import,包含 C 頭文件時使用 #include。

【編輯推薦】

  1. iOS開發(fā):Objective-C優(yōu)雅的語法
  2. iOS高效開發(fā)必備的10款Objective-C類庫
  3. C++開發(fā)者快速學(xué)習(xí)Objective-C語言核心語法
  4. Objective-C基礎(chǔ)語法快速入門
  5. iPhone開發(fā)入門守則:Objective-C編碼規(guī)范

 

責(zé)任編輯:佚名 來源: 百度百科
相關(guān)推薦

2011-05-11 15:19:01

CocoaObjective-C

2011-08-18 09:21:17

Objective-C

2014-04-28 09:56:56

Objective-CiOS命名空間

2011-08-04 10:57:33

Objective-C C語言 BOOL

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2011-05-11 15:58:34

Objective-C

2011-08-10 18:07:29

Objective-C反射

2011-07-25 17:31:49

iPhone Objective-

2011-08-03 16:55:05

Objective-C 代理

2011-08-04 09:35:09

Objective-C 編碼規(guī)范

2014-04-30 10:16:04

Objective-CiOS語法

2014-06-25 14:02:59

Objective-CKVO

2012-03-07 13:43:59

Objective-C

2011-07-08 13:49:46

Objective-C UUID

2012-06-15 09:47:48

Objective-CCategory

2011-07-29 16:16:30

Objective-c block

2011-08-17 10:58:59

Objective-C構(gòu)造函數(shù)

2011-05-11 13:54:08

Objective-C

2011-05-11 15:45:50

內(nèi)存管理Objective-C
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號