成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

了解Objective-C特點及特征

移動開發(fā) iOS
本文的目的是讓我來了解Objective-C特點及特征,通過了解Objective-C特點,我們可以 更方便的去學(xué)習(xí),來看內(nèi)容。

了解Objective-C特點及特征是本文要介紹的內(nèi)容,目前好象只有Apple使用Objective-C作為其支持的語言吧。 不多說,直接來看詳細內(nèi)容,與C++的不同之處有:

Objective-C中所有的類都必須繼承自NSObject。

Objective-C中所有對象都是指針的形式。

Objective-C用self代替this。

Objective-C使用id代替void*。

Objective-C使用nil表示NULL

Objective-Ck只支持單繼承。

Objective-C使用YES/NO表示TRUE/FALSE

Objective-C使用#import代替#include

Objective-C中用消息表示類的方法,并采用[aInstance method:argv]調(diào)用形式。

Objective-C支持反射機制

Objective-C支持Dynamic Typing, Dynamic Binding和Dynamic Loading。

與C++的相同之處有:

與C共享的部分一致。

可以使用assert(BOOL), 一般用NSCParameterAssert(BOOL)代替。

Objective-C中的命名前綴說明:

  1. NS-:NextStep   
  2. CF-:Core Foundation   
  3. CA-:Core Animation   
  4. CG-:Core Graphics   
  5. UI-:User Interface  

Objective-C中的消息特殊性:

調(diào)用消息的類可以不知道如何響應(yīng)這個消息。如果它不知道如何處理這個消息,它會自動的將這個消息轉(zhuǎn)給其他的類,比如它的父類。

調(diào)用消息的類可以是nil。在C++中,在使用類方法之前,我們都需要檢查對象是否為空,所以在實現(xiàn)析構(gòu)函數(shù)的時候,常會有如下的代碼,如if (var) { delete var; } 但是在Objective-C中,我們就可以直接寫[var release]; 即使var == nil, 也不會有問題。

Objective-C中的函數(shù)聲明格式有:

  1. -/+ (return type) function_name;   
  2. -/+ (return type) function_name : (parameter type) parameter;   
  3. -/+ (return type) function_name :   
  4. (parameter type) parameter1 otherParameter :   
  5. (parameter_type) parameter2  

以上參數(shù)說明:-表示一般函數(shù),+表示靜態(tài)函數(shù)。otherParameter是參數(shù)的別名(***個參數(shù)的別名省略),在函數(shù)調(diào)用時方便指定。

Objective-C中的構(gòu)造/析構(gòu)函數(shù)

Objective-C中的init()/release()對應(yīng)于C++的構(gòu)造/析構(gòu)函數(shù)。alloc()/dealloc()也就對應(yīng)于C++的new和delete,其中的dealloc()由于引用計數(shù)的自動調(diào)用而不用手動調(diào)用。

Objective-C中父類的init()/release()函數(shù)需要子類的手動調(diào)用。而且每次都必須調(diào)用。不同于C++的自動調(diào)用。

構(gòu)造函數(shù)(- (id) init)調(diào)用形如:CSample* pSample=[CSample alloc] init];其中alloc(+ (id) alloc)是繼承來的static函數(shù),init是繼承來的一般函數(shù),如重寫一般函數(shù)時,則相當于C++的覆蓋(不帶參數(shù))或重載(帶參數(shù))。

析構(gòu)函數(shù)(- (void) release)將引用計數(shù)減1,當=0時父類的release()會自動調(diào)用dealloc(- (void) dealloc);

當Objective-C沒有數(shù)據(jù)成員時,可省略{},建議保留。

繼承下來的方法,如:-(id) init可以頭文件中省略,建議保留

0-C中只有數(shù)據(jù)成員的訪問限制,沒有方法的訪問限制。

同C++一樣,數(shù)據(jù)成員有三種訪問限制public, protected, private,缺省是protected。

示例:

  1.  @interface AccessExample: NSObject {  
  2. @public  
  3.     int publicVar;  
  4. @protected  
  5.     int protectedVar;  
  6. @private  
  7.     int privateVar;  
  8. }  
  9. @end  

方法的訪問限制可通過Category實現(xiàn)

示例:

  1. @interface MyClass  
  2. - (void) sayHello {  
  3.     NSLog(@"Hello");  
  4. }  
  5. @end  
  6.     
  7. @interface MyClass(Private)  
  8. - (void) kissGoodbye;  
  9. @end  

Objective-C中沒有類的靜態(tài)變量,只有全局變量

Objective-C中的數(shù)組NSArray可以保存不同類型的數(shù)據(jù)。

Objective-C也支持run-time時的類類型檢查

  1. - (BOOL) isKindOfClass: classObj 

用于判斷該對象是否屬于某個類或者它的子類

  1. - (BOOL) isMemberOfClass: classObj 

用于判斷該對象是否屬于某個類(這里不包括子類)

  1. - (BOOL) respondsToSelector: selector 

用于判斷該對象是否能響應(yīng)某個消息。這里,我們可以將@selector后面帶的參數(shù)理解為C++中的函數(shù)指針。

注意:

1)不要忘了@

2)@selector后面用的是(),而不是[]。

3)要在消息名稱后面跟:,無論這個消息是否帶參數(shù)。如:

  1. [pSquare respondsToSelector:@selector(Set: andHeight:)]。   
  2. + (BOOL) instancesRespondToSelector: selector 

用于判斷該類是否能響應(yīng)某個消息。這是一個靜態(tài)函數(shù)

-(id) performSelector: selector :調(diào)用對象的selector方法。

conformsToProtocol 類似于respondsToSelector ,用于動態(tài)檢查某個對象是否遵守某個協(xié)議。

Category:在沒有源代碼的情況下,為一個已經(jīng)存在的類添加一些新的功能

只能添加新的方法,不能添加新的數(shù)據(jù)成員

Category 的名字必須是***的

Protocol:相當于C++中的純虛類

形如:

  1. @interface MyDate: NSObject <Printing> { } @end  

使用:

  1. MyDate * dat = [[MyDate alloc] init]; id<Printing> var = dat; [var print]。  

說明:我們首先聲明了Printing 協(xié)議,任何遵守這個協(xié)議的類,都必須實現(xiàn)print 方法。在Objective-C 中,我們通過<>來表示遵守某個協(xié)議。當某個類聲明要遵守某個協(xié)議之后,它就必須在.m文件中實現(xiàn)這個協(xié)議中的所有方法。使用id<Printing> 作為類型,而不是象C++中的Printing* var。

IBOutlet, IBAction: 這兩個東西其實在語法中沒有太大的作用。如果你希望在Interface Builder中能看到這個控件對象,那么在定義的時候前面加上IBOutlet,在IB里就能看到這個對象的outlet,如果你希望在Interface Builder里控制某個對象執(zhí)行某些動作,就在方法前面加上(IBAction)。

盡量避免在一行語句中進行兩層以上的嵌套

消息轉(zhuǎn)發(fā):

  1. - (void) forwardInvocation: (NSInvocation*)anInvocation;  

小結(jié):了解Objective-C特點及特征的內(nèi)容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-22 15:10:51

Objective-C 文件

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-08-02 15:55:31

Objective-C NSAutorele

2011-08-04 13:55:10

Cocoa Objective- 文件

2013-06-20 10:40:32

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

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C

2011-08-10 18:07:29

Objective-C反射

2011-07-26 10:50:50

Objective-C Selector

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
點贊
收藏

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

主站蜘蛛池模板: 国产日韩欧美在线 | 请别相信他免费喜剧电影在线观看 | 欧美一区二区三区在线观看视频 | 国产精品久久久久久久久久久久久久 | 国产成人精品一区二区三区网站观看 | 日韩精品视频在线 | 亚洲一区二区三区免费在线 | 欧美成人精品一区二区男人看 | 无吗视频 | 亚洲欧美一区二区三区在线 | 日本免费在线看 | 国产网站在线播放 | 国产亚洲精品综合一区 | 久久久久久免费毛片精品 | 羞羞视频在线网站观看 | 欧美日韩一区在线播放 | 一区二区在线 | 91久久精品国产 | 日日做夜夜爽毛片麻豆 | 日本久久综合网 | 国产91久久久久 | 亚洲精品久久久久久久不卡四虎 | 亚洲在线观看视频 | 日本特黄a级高清免费大片 国产精品久久性 | 日韩久久久一区二区 | 日韩欧美日韩在线 | 福利电影在线 | 国产精彩视频 | 亚洲另类自拍 | 久久国产精品色av免费观看 | 精品成人 | 精品在线一区二区三区 | 一区二区三区av | 野狼在线社区2017入口 | 国产精品a免费一区久久电影 | 欧美xxxx日本 | 亚洲二区在线观看 | 国产中文字幕网 | 色视频网站 | 暖暖成人免费视频 | 精品久久网 |