欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Objective-C的內省(Introspection)用法小結

 更新時間:2014年07月05日 16:48:50   投稿:shichen2014  
這篇文章主要介紹了Objective-C的內省(Introspection)用法,這是面向對象語言和環(huán)境的一個強大特性,需要的朋友可以參考下

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

恰當?shù)厥褂脙仁】梢允姑嫦驅ο蟮某绦蜻\行更加高效和強壯。也有助于避免錯誤地進行消息派發(fā)、錯誤地假設對象相等。

下面的部分舉例介紹如何在代碼中有效地使用NSObject的內省方法。
 
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語言實現(xiàn)簡單的掃雷游戲

    這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)簡單的掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    這篇文章主要介紹了Qt利用Qchart組件展示數(shù)據(jù)庫中的歷史數(shù)據(jù)。文中的示例代碼講解清晰,具有一定的學習和工作價值,感興趣的小伙伴可以學習一下
    2021-12-12
  • C語言實現(xiàn)猜拳游戲

    C語言實現(xiàn)猜拳游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++數(shù)據(jù)結構之搜索二叉樹的實現(xiàn)

    C++數(shù)據(jù)結構之搜索二叉樹的實現(xiàn)

    了解搜索二叉樹是為了STL中的map和set做鋪墊,我們所熟知的AVL樹和平衡搜索二叉樹也需要搜索二叉樹的基礎。本文將詳解如何利用C++實現(xiàn)搜索二叉樹,需要的可以參考一下
    2022-05-05
  • C++ 網絡連通性檢測的實現(xiàn)方法

    C++ 網絡連通性檢測的實現(xiàn)方法

    這篇文章主要介紹了C++ 網絡連通性檢測的實現(xiàn)方法的相關資料,這里提供實例幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • 詳解C++?functional庫中的仿函數(shù)使用方法

    詳解C++?functional庫中的仿函數(shù)使用方法

    仿函數(shù)(functor)又稱之為函數(shù)對象(function?object),實際上就是?重載了()操作符?的?struct或class。本文將詳細講解C++中仿函數(shù)的使用方法,需要的可以參考一下
    2022-04-04
  • C語言位運算和sizeof運算符詳解

    C語言位運算和sizeof運算符詳解

    這篇文章主要介紹了C語言位運算和sizeof運算符詳解的相關資料,這里提供了詳細的知識要點,并附簡單代碼示例,需要的朋友可以參考下
    2016-11-11
  • 詳解C語言中for循環(huán)與while循環(huán)的用法

    詳解C語言中for循環(huán)與while循環(huán)的用法

    這篇文章主要通過幾個示例為大家介紹一下C語言中for循環(huán)與while循環(huán)的用法以及二者的區(qū)別,文中的代碼講解詳細,對我們學習C語言有一定幫助,需要的可以參考一下
    2022-07-07
  • 數(shù)據(jù)結構之AVL樹詳解

    數(shù)據(jù)結構之AVL樹詳解

    這篇文章主要介紹了數(shù)據(jù)結構之AVL樹詳解,本文非常細致的講解了AVL樹的基礎知識、AVL樹的旋轉操作、AVL數(shù)的插入和刪除操作等,需要的朋友可以參考下
    2014-08-08
  • 軟件構建工具makefile基礎講解

    軟件構建工具makefile基礎講解

    這篇文章介紹了軟件構建工具makefile,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12

最新評論