অবজেক্ট-সি-তে কোনও বস্তু নির্দিষ্ট শ্রেণীর উদাহরণ কিনা তা আমি কীভাবে পরীক্ষা করব? ধরা যাক আমি দেখতে চাই যে বস্তুটি ক্লাস বি, বা ক্লাস সি এর উদাহরণ, আমি কীভাবে এটি করতে যাব?
অবজেক্ট-সি-তে কোনও বস্তু নির্দিষ্ট শ্রেণীর উদাহরণ কিনা তা আমি কীভাবে পরীক্ষা করব? ধরা যাক আমি দেখতে চাই যে বস্তুটি ক্লাস বি, বা ক্লাস সি এর উদাহরণ, আমি কীভাবে এটি করতে যাব?
উত্তর:
বস্তুটি ক্লাস ক এর উদাহরণ কিনা তা পরীক্ষা করতে:
[yourObject isKindOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of
// given class or an instance of any class that inherits from that class.
অথবা
[yourObject isMemberOfClass:[a class]]
// Returns a Boolean value that indicates whether the receiver is an instance of a
// given class.
অবজেক্টের শ্রেণীর নাম পেতে আপনি NSStringFromClass
ফাংশনটি ব্যবহার করতে পারেন :
NSString *className = NSStringFromClass([yourObject class]);
বা উদ্দেশ্য-সি রানটাইম এপিআই থেকে সি-ফাংশন:
#import <objc/runtime.h>
/* ... */
const char* className = class_getName([yourObject class]);
NSLog(@"yourObject is a: %s", className);
সম্পাদনা: সুইফটে
if touch.view is UIPickerView {
// touch.view is of type UIPickerView
}
class_getName
ওভার ব্যবহার করে কী সুবিধা NSStringFromClass
? যদি কিছুই না থাকে তবে এই উত্তরটি সামঞ্জস্য করা উচিত।
আপনি ব্যবহার করতে পারেন
NSString *className = [[myObject class] description];
যে কোনও এনএসবজেক্টে
অ্যাপল ডকুমেন্টেশনে #KindOfClass সম্পর্কে কী বোঝায়
ক্লাস ক্লাস্টার দ্বারা প্রতিনিধিত্ব করা অবজেক্টগুলিতে এই পদ্ধতিটি ব্যবহার করার সময় সাবধান হন। ক্লাস ক্লাস্টারের প্রকৃতির কারণে, আপনি যে জিনিসটি ফিরে পাবেন তা সর্বদা আপনার প্রত্যাশিত ধরণের নাও হতে পারে। আপনি যদি এমন কোনও পদ্ধতিতে কল করেন যা ক্লাস ক্লাস্টারকে রিটার্ন দেয় তবে সেই পদ্ধতিটি দ্বারা ফিরে আসা সঠিক ধরণটি আপনি সেই অবজেক্টটি দিয়ে কী করতে পারেন তার সেরা সূচক। উদাহরণস্বরূপ, যদি কোনও পদ্ধতি কোনও এনএসআরাই অবজেক্টকে একটি পয়েন্টার দেয়, নিম্নলিখিত কোডে দেখানো হিসাবে অ্যারেটি পরিবর্তনযোগ্য কিনা তা দেখার জন্য আপনাকে এই পদ্ধতিটি ব্যবহার করা উচিত নয়:
// DO NOT DO THIS!
if ([myArray isKindOfClass:[NSMutableArray class]])
{
// Modify the object
}
আপনি যদি এই কোডটি আপনার কোডটিতে ব্যবহার করেন তবে আপনি মনে করতে পারেন যে কোনও বস্তুকে বাস্তবে সংশোধন করা উচিত নয় তা সংশোধন করা ঠিক। এটি করার পরে অন্যান্য কোডগুলির ক্ষেত্রে সমস্যা তৈরি হতে পারে যা প্রত্যাশাটি অপরিবর্তিত থাকবে।
-isKindOfClass:
ও -isMemberOfClass:
একটি বর্গ ক্লাস্টার মধ্যে বস্তু শনাক্ত করতে না ব্যবহার করা উচিত।
আপনি যদি একটি নির্দিষ্ট ক্লাসের জন্য পরীক্ষা করতে চান তবে আপনি ব্যবহার করতে পারেন
if([MyClass class] == [myClassObj class]) {
//your object is instance of MyClass
}
আপনি যদি ক্লাসের নাম পেতে চান তবে কেবল কল করুন: -
id yourObject= [AnotherClass returningObject];
NSString *className=[yourObject className];
NSLog(@"Class name is : %@",className);