2010-08-12 12 views
11

में 'कक्षा' की तुलना में 'कक्षा' की तुलना करना 'isKindOfClass:' की तुलनात्मक रूप से एक 'कक्षा' की तुलना करने के लिए मौजूद है (यानी किसी भी वर्ग के उदाहरण के निर्माण के बिना)। उदाहरण के लिए, दिया गया:उद्देश्य-सी

Class class = NSClassFromString(@"NSNumber"); 

[NSNumber isKindOfClass:class]; // YES 
[NSString isKindOfClass:class]; // NO 

धन्यवाद!

उत्तर

21

+ (BOOL)isSubclassOfClass:(Class)aClass

और

Class theClass = NSClassFromString(@"NSNumber"); 

if ([NSNumber class] == theClass) { 
    // YES 
} 

वहाँ एक वर्ग के 1 से अधिक उदाहरण नहीं है, यही कारण है कि == ऑपरेटर आप देख रहे हैं है।

+0

हाय जॉर्ज। दूसरा उदाहरण संकलन त्रुटि में परिणाम "एनएसएनंबर 'से पहले अपेक्षित अभिव्यक्ति", हालांकि पहला काम करता है! क्या आप जानते हैं कि सबक्लास शामिल नहीं करना सीमित है? धन्यवाद! –

+1

अगर कथन {if ([NSNumber class] == वर्ग) होना चाहिए। अधिक जानकारी के लिए, देखें: http://stackoverflow.com/questions/3107213 –

+0

@ केविन: फिक्स्ड है कि, मुझे पहले इसकी जांच करनी चाहिए थी। माफ़ कीजिये। –

5

हाँ, आप कर सकते हैं:

[NSNumber isSubclassOfClass:class]; //YES 
[NSString isSubclassOfClass:class]; //NO 

ये NSObject पर वर्ग तरीके हैं।

+0

धन्यवाद डेव। क्या सबक्लास शामिल नहीं करना सीमित है? धन्यवाद। –

+0

@ केविन @Georg के रूप में बताते हैं, आप कर सकते हैं: '[NSNumber क्लास] == वर्ग' –

+0

आह ठंडा! धन्यवाद डेव! –