1.isKindOfClass與isMemberOfClass,都是對象方法 框架
前者判斷是否該類或其子類,後者只判斷是否該類。 spa
BOOL c1 = [[NSMutableArray array] isKindOfClass:[NSArray class]];//yes BOOL c2 = [[NSMutableArray array] isMemberOfClass:[NSArray class]];//no
2.conformsToProtocol有類方法有對象方法,檢查是否聽從某協議,與是否實現改協議無關 debug
一個接收者聽從一個協議,能夠是直接接受這個協議,也能夠繼承一個已經接受這個協議的類 code
BOOL c3 = [[NSArray array] conformsToProtocol:@protocol(UITabBarControllerDelegate)];//no BOOL c4 = [[NSArray class] conformsToProtocol:@protocol(NSObject)];//yes
Class class1 = [NSArray class]; Class class2 = [NSArray superclass]; NSArray *array = @[@"ddss", @"dsdd", @"dfsdds"]; NSLog(@"\n%@\n%@", [array description], [array debugDescription]); BOOL c5 = [[NSMutableArray class] isSubclassOfClass:[NSMutableArray class]];//yes
BOOL c6 = [[NSMutableArray array] isProxy];//no
NSArray *arr = @[@"ddd", @"ddd"]; NSArray *arr1 = @[@"ddd", @"ddd", @"ddd"]; BOOL c7 = [arr isEqual:arr1]; NSUInteger hash1 = [arr hash]; NSUInteger hash2 = [arr1 hash]; NSDictionary *dic1= @{@"ddd":@"dd", @"ddf":@"ffff"}; NSDictionary *dic2= @{@"ddd":@"ff", @"ddf":@"ffffff"}; NSUInteger hash3 = [dic1 hash]; NSUInteger hash4 = [dic2 hash];
6.內省(Introspection) orm
內省(Introspection)是面嚮對象語言和環境的一個強大特性,Objective-C和Cocoa在這個方面尤爲的豐富。內省是對象揭示本身做爲一個運行時對象的詳細信息的一種能力。這些詳細信息包括對象在繼承樹上的位置,對象是否遵循特定的協議,以及是否能夠響應特定的消息。NSObject協議和類定義了不少內省方法,用於查詢運行時信息,以便根據對象的特徵進行識別。 對象
明智地使用內省能夠使面向對象的程序更加高效和強壯。它有助於避免錯誤地進行消息派發、錯誤地假設對象相等、以及相似的問題。 繼承
總結:經過NSObject,其它類繼承了一些基礎的與Objective-C語言編譯器系統之間的接口,而且得到了在它的實例中表現爲一個對象的能力。 接口