欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

Objective-C的內(nèi)省(Introspection)用法小結(jié)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

內(nèi)?。↖ntrospection)是面向?qū)ο笳Z言和環(huán)境的一個強大特性,Objective-C和Cocoa在這個方面的表現(xiàn)尤其的優(yōu)秀。內(nèi)省是對象揭示自己作為一個運行時對象的詳細信息的一種能力。這些詳細信息包括對象在繼承樹上的位置,對象是否遵循特定的協(xié)議,以及是否可以響應特定的消息等等。NSObject協(xié)議和類定義了很多內(nèi)省方法,用于查詢運行時信息,以便根據(jù)對象的特征進行識別。

恰當?shù)厥褂脙?nèi)省可以使面向?qū)ο蟮某绦蜻\行更加高效和強壯。也有助于避免錯誤地進行消息派發(fā)、錯誤地假設對象相等。

下面的部分舉例介紹如何在代碼中有效地使用NSObject的內(nèi)省方法。
 
1、isKindOfClass:Class

檢查對象是否是那個類或者其繼承類實例化的對象

2、isMemberOfClass:Class

檢查對象是否是那個類但不包括繼承類而實例化的對象

示例:

Objective-c代碼如下:

if ([item isKindOfClass:[NSData class]]) { 
  const unsigned char *bytes = [item bytes]; 
  unsigned int length = [item length]; 
  // ... 
} 
 

如果item是NSMutableData類實例化的對象,而該類是NSData類的子類,那么[item isKindOfClass:[NSData class]]的值也是TRUE,而[item isMemberOfClass:[NSData class]]的值則為False。
如果item是NSData類實例化的對象,那么[item isMemberOfClass:[NSData class]]的值則為TRUE。

3、respondToSelector:selector

檢查對象是否包含這個方法

Objective-c代碼如下:

- (void)doCommandBySelector:(SEL)aSelector { 
  if ([self respondsToSelector:aSelector]) { 
    [self performSelector:aSelector withObject:nil]; 
  } else { 
    [_client doCommandBySelector:aSelector]; 
  } 
} 

4、conformsToProtocol:protocol

檢查對象是否符合協(xié)議,是否實現(xiàn)了協(xié)議中所有的必選方法。

Objective-c代碼如下:

// ... 
if (!([((id)testObject) conformsToProtocol:@protocol(NSMenuItem)])) { 
  NSLog(@"Custom MenuItem, '%@', not loaded; it must conform to the 
    'NSMenuItem' protocol.\n", [testObject class]); 
  [testObject release]; 
  testObject = nil; 
}

上一篇:C語言雙向鏈表的表示與實現(xiàn)實例詳解

欄    目:C語言

下一篇:C的|、||、&、&&、異或、~、!運算符

本文標題:Objective-C的內(nèi)省(Introspection)用法小結(jié)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3642.html

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有