2009-08-13 15 views
7

को भेजे गए संदेश मैं कोडclassName और isKindOfClass एक वस्तु

NSMutableArray *mutArray = [[NSMutableArray alloc] init]; 
[mutArray addObject: [NSProcessInfo processInfo]]; 
[mutArray addObject: @"This is NSString Object"]; 
[mutArray addObject: [[NSMutableString alloc] initWithString: @"1st Mutable String"]]; 

for (id element in mutArray){ 
     NSLog(@" "); 
     NSLog(@"Class Name: %@", [element className]); 
     NSLog(@"Is Member of NSString: %@", ([element class] isMemberOfClass: [NSString class]) ? YES: NO); 
     NSLog(@"Is kind of NSString: %@", ([element class] isKindOfClass: [NSString class]) ? YES: NO); 
} 

मैं हो रही है का टुकड़ा निम्नलिखित हैं निम्नलिखित निर्गम (और के रूप में उठाई उम्मीद)

Class Name: NSProcessInfo 
Is Member of NSString: NO 
Is Kind of NSString: NO 

Class Name: NSCFString   <-- Expecting NSString 
Is Member of NSString: NO  <-- Expecting YES 
Is Kind of NSString: NO  <-- Expecting YES 

Class Name: NSCFString   <-- Expecting NSMutableString 
Is Member of NSString: NO  
Is Kind of NSString: NO  <-- Expecting YES 

मैं यहाँ कुछ भयानक सरल लापता हूँ? धन्यवाद!

उत्तर

16

उपयोग:

[element isMemberOfClass: [NSString class]] 
नहीं

:

[[element class] isMemberOfClass: [NSString class]] 

NSString और NSMutableString एक class cluster के रूप में लागू किया जाता है (देखें "स्ट्रिंग वस्तुओं" iPhone version of the documentation में)।

तो isKindOfClass: सत्य वापस आना चाहिए लेकिन MemberOfClass: NSString ऑब्जेक्ट का सटीक प्रकार नहीं है क्योंकि झूठी वापसी होगी।

+0

अच्छा पकड़ :) ... धन्यवाद! – Dev

2

NSString कक्षाओं के समूह से बना है। वे CFString एस (CoreFoundation से) के साथ टोल फ्री-ब्रिज भी हैं। NSString के कार्यान्वयन में कहीं भी यह संभावना है कि यह NSCFString प्रकट होता है (मुझे सभी तथ्यों को नहीं पता है, लेकिन यहां मेरी कटौती यह वर्ग पुल के रूप में कार्य करती है)।

+0

तो अगर हम किसी भी निरीक्षण को करना चाहते हैं, तो क्या हमें वास्तव में एनएससीएफस्ट्रिंग के खिलाफ जांच करनी चाहिए? – Dev

+0

यानी एनएसएसटींग और एनएसएमयूटेबल स्टिंग क्लास ऑब्जेक्ट्स के लिए? – Dev

संबंधित मुद्दे