একটি বিভাগ এবং শ্রেণিবদ্ধকরণের মধ্যে পার্থক্য কী। আমি বিশ্বাস করি যে বিদ্যমান ক্লাসগুলিতে উভয়ই কাস্টম পদ্ধতি যুক্ত করতে ব্যবহৃত হয়। কেউ কি এ বিষয়ে আলোকপাত করতে পারে? কোড সহ পরীক্ষার সত্যই প্রশংসা করা হবে।
একটি বিভাগ এবং শ্রেণিবদ্ধকরণের মধ্যে পার্থক্য কী। আমি বিশ্বাস করি যে বিদ্যমান ক্লাসগুলিতে উভয়ই কাস্টম পদ্ধতি যুক্ত করতে ব্যবহৃত হয়। কেউ কি এ বিষয়ে আলোকপাত করতে পারে? কোড সহ পরীক্ষার সত্যই প্রশংসা করা হবে।
উত্তর:
বিদ্যমান বিভাগে পদ্ধতি যুক্ত করার একটি উপায় হল একটি বিভাগ। তারা সাধারণত "এনএসভিউ + কাস্টম অ্যাডিশনস।" (এবং। মি। অবশ্যই) "ক্লাস + বিভাগের নাম।" নামে থাকা ফাইলগুলিতে থাকে।
একটি শ্রেণীর প্রসার 2 মূল পার্থক্য ব্যতীত একটি বিভাগ:
বিভাগটির কোনও নাম নেই। এটি এভাবে ঘোষণা করা হয়েছে:
নিবন্ধ
- (void) anAdditionalMethod;
@শেষএক্সটেনশনটির বাস্তবায়ন অবশ্যই ফাইলের প্রধান @ ইমপ্লিমেন্টেশন ব্লকে থাকতে হবে।
ক্লাসের আরও মেথডগুলি ঘোষণা করে .m ফাইলের শীর্ষে একটি শ্রেণীর বর্ধিতাংশ দেখা খুব সাধারণ বিষয়, যা ক্লাসের মূল @ বাস্তবায়ন বিভাগে নীচে প্রয়োগ করা হয়। এটি "সিউডো-প্রাইভেট" পদ্ধতিগুলি ঘোষণা করার একটি উপায় (ছদ্ম-প্রাইভেট যাতে তারা প্রকৃতই ব্যক্তিগত নয়, কেবল বাহ্যিকভাবে প্রকাশিত হয় না)।
=> উদ্দেশ্য সিতে, যখন আপনি উত্তরাধিকার ছাড়াই কোনও শ্রেণিতে আরও কিছু কার্যকারিতা যুক্ত করতে চান, আপনি কেবল এর জন্য বিভাগটি ব্যবহার করেন use
=> এটি নিজস্ব .h এবং .m ফাইলের সাথে আসে
=> Categoryবৈশিষ্ট্য নয় নতুন পদ্ধতি যুক্ত করতে ব্যবহার করে।
-> In Objective C, when you want to make behaviour of some property private you use class extension.
-> it comes with **.h** file only.
-> mainly for properties.
দ্রষ্টব্য: যখন আমরা একটি নতুন ফাইল যুক্ত করি এবং উদ্দেশ্য সি বিভাগের বিকল্পগুলির বিভাগ নির্বাচন করি এবং "বিভাগের" নয় "সাবক্লাসের উপর" বিভাগ দেখায় তাই এটির মতো দেখায়
@interface className (categoryName)
@end
-আপনি দুটি ফাইল পাবেন .h এবং .m হিসাবে ফাইল নাম দিয়ে ( classname + + categoryName.h এবং classname + + categoryName.m )
এবং এক্সটেনশনের ক্ষেত্রে আপনি পাবেন
@interface className()
@end
- আপনি নামের সাথে কেবল একটি ফাইল পাবেন ক্লাসনেম_ এক্সটেনশননাম। H পাবে
বিভাগটি কোনও শ্রেণিতে পদ্ধতি যুক্ত করার একটি উপায় যা উত্স কোডটি উপলভ্য কিনা, অর্থাত আপনি যেমন ফাউন্ডেশন ক্লাসগুলিতে বিভাগ যুক্ত করতে পারেন NSString আপনার নিজের পছন্দমতো ক্লাসগুলির ।
এক্সটেনশন কেবলমাত্র সেই ক্লাসগুলিতে যুক্ত করা যেতে পারে যার উত্স কোড উপলভ্য কারণ সংকলক একই সাথে উত্স কোড এবং এক্সটেনশান সংকলন করে।
আমরা শ্রেণীর এক্সটেনশনে অতিরিক্ত উদাহরণ ভেরিয়েবল এবং বৈশিষ্ট্য যুক্ত করতে পারি তবে বিভাগে নয়।
এক্সটেনশনের অভ্যন্তরের কোনও পরিবর্তনশীল এবং পদ্ধতি উত্তরাধিকার সূত্রে প্রাপ্ত শ্রেণিতেও অ্যাক্সেসযোগ্য নয়।
বিভাগ এবং এক্সটেনশন উভয়ই মূলত বড় কোড বেস হ্যান্ডেল করার জন্য তৈরি করা হয়, তবে বিভাগটি একাধিক উত্স ফাইলে শ্রেণীর এপিআই প্রসারিত করার একটি উপায় যখন এক্সটেনশন হ'ল মূল ইন্টারফেস ফাইলের বাইরে প্রয়োজনীয় পদ্ধতিগুলি যুক্ত করার উপায়।
যখন আপনার একই ক্লাসের কোডটি বিভিন্ন কার্যকারিতা অনুসারে বিভিন্ন উত্স ফাইলে বিভক্ত করতে হয় তখন এবং বিভাগটি ব্যবহার করুন যখন আপনাকে কেবলমাত্র মূল ইন্টারফেস ফাইলের বাইরে বিদ্যমান শ্রেণিতে কিছু প্রয়োজনীয় পদ্ধতি যুক্ত করতে হবে। এছাড়াও, যখন আপনাকে ক্লাসে প্রকাশ্যে ঘোষিত ইনস্ট্যান্স ভেরিয়েবলটি পরিবর্তন করতে হবে, উদাহরণস্বরূপ, পাঠ্যলিখনে পাঠ্যভাবে, আপনি এটি এক্সটেনশনে পুনরায় ঘোষণা করতে পারেন।
সম্প্রসারণ : পদ্ধতিগুলিকে ব্যক্তিগত করতে এবং অ্যাপল শ্রেণির নয়, নিজস্ব কাস্টম শ্রেণীর বৈশিষ্ট্য যুক্ত করতে।
বিভাগ : বিদ্যমান শ্রেণিতে সম্পত্তি না বলে আরও পদ্ধতি যুক্ত করতে এটি কাস্টম ক্লাস এবং অ্যাপল শ্রেণির উভয়ের জন্যই ব্যবহার করা যেতে পারে NSString।
বিভাগ শ্রেণিতে সেট সম্পর্কিত সম্পত্তি ব্যবহার করে আমাদেরও সম্পত্তি থাকতে পারে।
@interface SomeClass (Private)
@property (nonatomic, assign) id newProperty;
@end
NSString * const kNewPropertyKey = @"kNewPropertyKey";
@implementation SomeClass (Private)
@dynamic newProperty;
- (void)setNewProperty:(id)aObject
{
objc_setAssociatedObject(self, kNewPropertyKey, aObject, OBJC_ASSOCIATION_ASSIGN);
}
- (id)newProperty
{
return objc_getAssociatedObject(self, kNewPropertyKey);
}
@end
দেখুন: http://inchoo.net/dev-talk/ios-de વિકાસment / how-to-add-a-property-via-class-category/
@interface SomeClass ()
- (void) anAdditionalMethod;
@end
আমি মনে করি এটি বিভাগ ঘোষণা করার উপায় নয়। বিভাগের একটি নাম থাকতে হবে
@interface SomeClass (XYZ)
- (void) anAdditionalMethod;
@end
উদাহরণ স্বরূপ
@interface NSMutableArray (NSMutableArrayCreation)
+ (id)arrayWithCapacity:(NSUInteger)numItems;
- (id)initWithCapacity:(NSUInteger)numItems;
@end
অ্যাপল NSMutableArray এর জন্য ঘোষণা করেছে
আইওএস এক্সটেনশান সি # এর সাথে একই, জাভা বিমূর্ত শ্রেণি বা ইন্টারফেস
আইওএস বিভাগে সি # এর সাথে একই, জাভা শ্রেণীর এক্সটেনশন
বিভাগসমূহ
আপনি যখন প্রচুর পরিমাণে পদ্ধতিযুক্ত ফাইল তৈরি করছেন তখন বিভাগগুলি ব্যবহৃত হয় o সুতরাং তারা আপনাকে একটি একক শ্রেণিকে বিভিন্ন মডিউলে বিভক্ত করার সুবিধা সরবরাহ করে A এছাড়াও বিভাগগুলিতে কোনও পরিবর্তন করা হয় তবে সংকলক পুরো প্রকল্পটি সংকলন করতে সময় নষ্ট করে না .শ্রেণীতে নতুন ভেরিয়েবল বা বৈশিষ্ট্য যুক্ত করতে ও তাদের পিতামাত্ত শ্রেণীর সন্ধান করতে সক্ষম হয় না You আপনি কোনও বিভাগে কোনও পদ্ধতিকে ওভাররাইড করতে পারেন তবে এটি একটি ভাল ধারণা নয় কারণ এই পদ্ধতিটি আরও ওভাররাইড করা যায় না A এছাড়াও প্রবাহটি কার্যকর করা যেতে পারে কারণ সমস্ত বিভাগেই রয়েছে একই শ্রেণিবিন্যাসের স্তর এবং তাই একই প্যারেন্ট বর্গের অন্তর্ভুক্ত দুটি বিভাগ চলমান সময়ে উপস্থিত থাকতে পারে categoriesএছাড়াও সুরক্ষিত পদ্ধতি বিভাগ ব্যবহার করে তৈরি করা যেতে পারে
এক্সটেনশনগুলি
এক্সটেনশানগুলি আপনাকে সম্পত্তিটি ওভাররাইড করতে বা বিদ্যমান প্যারেন্ট ক্লাসে নতুন সম্পত্তি যুক্ত করতে সক্ষম করে y তাদের নাম নেই এমন বিভাগগুলির সাথে সিন্ট্যাটিকভাবে একই এবং @ অন্তর্গত শ্রেণি হিসাবে প্রতিনিধিত্ব করা হয় () কোন। এম ফাইল উপস্থিত নেই এবং এক্সটেনশনে ঘোষিত পদ্ধতিটি প্রয়োগ করতে হবে @ পিতামাতার ফাইলের বাস্তবায়ন
এই লিঙ্কে আরও সহায়তা
এখানে আমার বোঝার বিষয়:
এক্সটেনশনগুলি সাধারণত আমাদের নিজস্ব " কাস্টম শ্রেণিতে " অতিরিক্ত বৈশিষ্ট্য যুক্ত করতে ব্যবহৃত হয় । ক্লাস ইন্টারফেসের প্রসারিত আমরা ব্যক্তিগত পদ্ধতি বা বৈশিষ্ট্যগুলি যুক্ত করতে পারি যা শ্রেণীর প্রয়োগের মধ্যে ব্যবহার করা যেতে পারে।
শ্রেণীর মতো একই ফাইলের মধ্যে এক্সটেনশানগুলি লিখতে হয়। অতএব আপনি স্ট্রিং, ফ্লোট ইত্যাদির মতো পূর্বনির্ধারিত ধরণের জন্য এক্সটেনশন লিখতে পারবেন না
অন্যদিকে বিভাগগুলি একটি বিদ্যমান বিদ্যমান ক্লাসে অতিরিক্ত পদ্ধতি যুক্ত করতে ব্যবহার করা যেতে পারে। উদাহরণ স্ট্রিং ক্লাস বাড়িয়ে আমরা আমাদের নিজস্ব পদ্ধতি তৈরি করতে পারি। নোট করুন যে আমরা বিভাগগুলিতে অতিরিক্ত সম্পত্তি তৈরি করতে পারি না । বিভাগগুলির প্রধান সুবিধা হ'ল আমরা আপনার শ্রেণিটি যে ফাইল থেকে বের হয় সেই ফাইলের বাইরে অন্য কোনও ফাইলে বিভাগগুলি লিখতে পারি।
বিভাগগুলি তৈরি করার সময় আপনার বন্ধনীগুলির মধ্যে এটির জন্য একটি নাম দেওয়ার কথা রয়েছে। তবে এক্সটেনশনের জন্য কোনও নামের দরকার নেই। তাই কিছু সময় এগুলিকে বেনামে বিভাগেও বলা হয়।