#KindOfClass এবং #MemberOfClass এর মধ্যে iOS পার্থক্য


152

isKindOfClass:(Class)aClassএবং isMemberOfClass:(Class)aClassকার্যাবলী মধ্যে পার্থক্য কি ? আমি জানি এটি ছোট কিছু, যেমন একটি গ্লোবাল এবং অন্যটি হুবহু ক্লাসের ম্যাচ তবে কোনটি দয়া করে তা নির্দিষ্ট করার জন্য আমার প্রয়োজন।

সুইফটে isKind(of aClass: AnyClass)এবং isMember(of aClass: AnyClass)

উত্তর:


264

isKindOfClass:YESপ্রাপক যদি নির্দিষ্ট শ্রেণীর উদাহরণ বা নির্দিষ্ট শ্রেণীর উত্তরাধিকার সূত্রে প্রাপ্ত কোনও শ্রেণীর উদাহরণ হয় তবে প্রত্যাবর্তন করে ।

isMemberOfClass:আয় YESকরে, এবং কেবল যদি, রিসিভার একটি দৃষ্টান্ত হল নিদিষ্ট ক্লাসের।

isKindOfClass:আপনার কোডটিও সাবক্লাসের সাথে কাজ করে তা নিশ্চিত করতে আপনি বেশিরভাগ সময় ব্যবহার করতে চান ।

NSObject প্রোটোকল রেফারেন্স এই পদ্ধতি সম্পর্কে আরো কিছু কথা বলেছেন।


আপনি কি দয়া করে আমার নিচের সন্দেহটি দূর করতে পারেন? যদি ([lbl.textColor মেম্বার অফক্লাস: [ইউআইকলার ক্লাস]]) {// মেমবার এনএসএলগ নয় (@ "মেমবার নয়"); } অন্য {এনএসএলগ (@ "মেমবার নয়"); } যদি ([imgView.image isMemberOfClass: [UIImage ক্লাস]]) {// মেম্বার এনএসএলগ (@ "মেমবার"); } অন্য {এনএসএলগ (@ "মেমবার নয়"); }
নিক্কি

82
  • isKindOfClass:কোনও বস্তু প্রদত্ত শ্রেণীর কাছ থেকে উত্তরাধিকার সূত্রে নির্দেশ করে
  • isMemberOfClass:কোনও বস্তু প্রদত্ত শ্রেণীর উদাহরণ কিনা তা নির্দেশ করে ।

[[NSMutableData data] isKindOfClass:[NSData class]]; // YES
[[NSMutableData data] isMemberOfClass:[NSData class]]; // NO

@ দুর্গা, যদি এটি আপনার প্রশ্নের উত্তর দেয় তবে আপনার এটি গ্রহণ করা উচিত। রেট গ্রহণের বিষয়ে এখানে আরও পড়ুন: মেটা.স্ট্যাকেক্সেঞ্জার.কম
সেকশনস

1
#KindOfClass হ'ল প্রদত্ত শ্রেণীর উদাহরণ হিসাবে যদি হ্যাঁ ফেরত দেয়। অন্য কথায় হ'ল মেম্বার অফক্লাস isKindOfClass এর একটি উপসেট।
স্কুটার

48

অনুমান করা

@interface A : NSObject 
@end

@interface B : A
@end

...

id b = [[B alloc] init];

তারপর

[b isKindOfClass:[A class]] == YES;
[b isMemberOfClass:[A class]] == NO;

মূলত, -isMemberOfClass: উদাহরণটি নির্দিষ্ট বর্গের হুবহু -isKindOfClass:হ'ল সত্য , অন্যদিকে উদাহরণটি নির্দিষ্ট শ্রেণীর হ'ল বা উদাহরণের পূর্বপুরুষদের মধ্যে একটি নির্দিষ্ট শ্রেণীর হয়।

-isMemberOfClass: খুব কম ব্যবহৃত হয়।


1
তবে যদি আপনার কাছে এমন একটি সংক্ষিপ্তসার রয়েছে যা ইউআইভিউ এবং একটি ইউআইএসিগমেন্টেড কন্ট্রোল অন্তর্ভুক্ত করে এবং আপনি সেগুলি লুপ করেছেন এবং ক্লাসে একটি শর্তসাপেক্ষ সেট করেছেন আপনি তাদের মধ্যে পার্থক্য জানাতে চাই মেম্বারঅফক্লাস ইউআইভিউ এবং আইসেম্বারঅফক্লাস ইউআইজিগমেন্টড কন্ট্রোল, না? #KindOfClass UISegmentedControl কে ইউআইভিউ হিসাবে দেখবে।
প্রুইটগো

পছন্দ করেছেন আপনি আইসআইন্ডঅফক্লাস ব্যবহার করতে পারেন: [ইউআইভিউ ক্লাস] আপনি যে সমস্ত পদার্থের সাথে কাজ করছেন তা ইউআইভিউস রয়েছে তা নিশ্চিত করার জন্য তবে আপনাকে মেম্বারঅফক্লাস ব্যবহার করতে হবে: [ইউআইভিউ ক্লাস] এবং / অথবা এই মেম্বারঅফক্লাস: [ইউআইজিগমেন্টেড কন্ট্রোল ক্লাস] কিছু স্বতন্ত্র বাস্তবায়ন নির্দেশ করার জন্য তাদের তাত্ক্ষণিক ক্লাসের উপর ভিত্তি করে মতামতের
নুডলঅফডিথ

9

#KindOfClass : একটি বুলিয়ান মান প্রদান করে যা নির্দেশ করে যে প্রাপক প্রদত্ত শ্রেণীর উদাহরণ বা কোনও শ্রেণীর উদাহরণ যা সেই শ্রেণীর উত্তরাধিকার সূত্রে প্রাপ্ত।

#MemberOfClass : একটি বুলিয়ান মান প্রদান করে যা নির্দেশ করে যে প্রাপক কোনও প্রদত্ত শ্রেণীর উদাহরণ।


2

#KindOfClass-> হ্যাঁ প্রত্যাবর্তন করুন যখন বস্তুটি সেই শ্রেণীর উদাহরণ বা এর থেকে উত্তরাধিকার সূত্রে প্রাপ্ত কোনও শ্রেণীর উদাহরণ।

#MemberOfClass: হ্যাঁ প্রত্যাবর্তন করুন যখন বস্তুটি সেই শ্রেণীর উদাহরণস্বরূপ তবে হ'ল না: কোনও শ্রেণীর উদাহরণ যা এর উত্তরাধিকার সূত্রে প্রাপ্ত।

উদাহরণস্বরূপ জেটব্যান্ডসের উত্তরে যথেষ্ট ভাল।


0

ক্লাস ক্লাস্টারের কারণে, isMemberOfClass আপনাকে এমন উত্তর দিতে পারে যা আপনি আশা করতে পারেন না। অনেক ক্ষেত্রে আপনার সেরা পছন্দটি সম্ভবত বেশি হয় - (বিওএল) কনফর্মগুলি টুপ্রোটোকল: (এসইএল) এ সিলেক্টর বা - (বিওওএল) কনফর্মটিওপ্রোটোকল: (প্রোটোকল *) এপ্রোটোকল। অর্থাৎ, ক্লাস / সাবক্লাস পরীক্ষার পরিবর্তে যদি তারা আপনার প্রয়োজনের জবাব দিতে পারে তবে এগুলি পরীক্ষা করা আরও ভাল।

এনএসবজেক্ট ক্লাস এবং প্রোটোকলের জন্য অ্যাপল ডকটি দেখুন:

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/cl/NSObject

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intf/NSObject

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.