উত্তর:
" ফর্মাল প্রোটোকলস " এর অ্যাপল পৃষ্ঠা থেকে :
@ অপশনাল কীওয়ার্ড ব্যবহার করে ptionচ্ছিক প্রোটোকল পদ্ধতিগুলি optionচ্ছিক হিসাবে চিহ্নিত করা যেতে পারে। @ অপশনাল মডেল কীওয়ার্ডের সাথে মিল রেখে, ডিফল্ট আচরণের শব্দার্থকে আনুষ্ঠানিকভাবে বোঝাতে একটি @ প্রয়োজনীয় কীওয়ার্ড রয়েছে। আপনি যথাযথ হিসাবে দেখতে দেখতে আপনার প্রোটোকলটিকে বিভাগে বিভক্ত করতে @ অপশনাল এবং @ প্রয়োজনীয় ব্যবহার করতে পারেন। আপনি যদি কোনও কীওয়ার্ড নির্দিষ্ট না করে থাকেন তবে ডিফল্টটি @ পুনরায় প্রয়োজনীয়।
@protocol MyProtocol
- (void)requiredMethod;
@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;
@required
- (void)anotherRequiredMethod;
@end
যদি কোনও প্রোটোকলে থাকা কোনও পদ্ধতিটি alচ্ছিক হিসাবে চিহ্নিত করা হয় তবে আপনাকে অবশ্যই পরীক্ষা করার আগে কোনও বস্তু সেই পদ্ধতিটি প্রয়োগ করে কিনা তা পরীক্ষা করে দেখতে হবে।
উদাহরণস্বরূপ, পাই চার্ট ভিউটি এইভাবে বিভাগের শিরোনাম পদ্ধতির জন্য পরীক্ষা করতে পারে:
NSString *thisSegmentTitle;
if ([self.dataSource respondsToSelector:@selector(titleForSegmentAtIndex:)]) {
thisSegmentTitle = [self.dataSource titleForSegmentAtIndex:index];
}
প্রতিক্রিয়াশক্তি নির্বাচন: পদ্ধতিতে একটি নির্বাচক ব্যবহার করা হয়, যা সংকলনের পরে কোনও পদ্ধতির জন্য সনাক্তকারীকে বোঝায়। আপনি @ নির্বাচক () নির্দেশিকা ব্যবহার করে এবং পদ্ধতির নাম উল্লেখ করে সঠিক সনাক্তকারী সরবরাহ করতে পারেন।
এই উদাহরণে ডেটা উত্স যদি পদ্ধতিটি প্রয়োগ করে তবে শিরোনামটি ব্যবহৃত হয়; অন্যথায়, শিরোনাম শূন্য থাকে।
@protocol MyProtocol <NSObject>
প্রোটোকল নিয়ম সেট করা হয়। নীচের উদাহরণ হিসাবে আমরা প্রোটোকল তৈরি করতে পারি:
TestProtocols.h
@protocol TestProtocols <NSObject>
@optional
-(void)testMethodOptional;
@required // by default
-(void)testMethodRequired;
@end
বাস্তবায়ন:
TestClass.h
#import "TestProtocols.h"
@interface TestClass : NSObject <TestProtocols>
@end
TestClass.m
#import "TestClass.h"
@implemenation TestClass
//optional to implement
-(void)testMethodOptional{
// Your Code
}
//required to implement
-(void)testMethodRequired{
// Your Code
}
@end
ব্যবহার করুন @optional
এটা ঐচ্ছিক করার জন্য আপনার পদ্ধতি ঘোষণা করার আগে শব্দ। সরল!
// myProtocol.h
@protocol myProtocol
- (void)myMandatoryMethod:(id)someArgument;
@optional
- (void)myOptionalMethod:(id)someArgument;
@end
// myClass.m
@interface myClass : someSuperClass <myProtocol>
//...
@end
প্রোটোকলগুলি বিমূর্ত ক্লাসগুলির মতোই কাজ করে, তাই @ অপশনাল কীওয়ার্ড সেই পদ্ধতিগুলি প্রয়োগ করে যা প্রয়োগের জন্য optionচ্ছিক।
সুতরাং, কোডটিতে, কিছু ম্যাথোড 1, কিছু ম্যাথোড 2 এবং কিছুMethod4 প্রয়োজনীয় পদ্ধতি (অবশ্যই প্রয়োগ করা উচিত)। SomeMethod3 alচ্ছিক - যদি আমরা এই পদ্ধতিটি বাস্তবায়ন না করি তবে সংকলকটি কোনও সতর্কতা নিক্ষেপ করবে না।
@protocol myPrtocol<NSObject>
-(void)someMethod1:(id)someArgument;
-(void)someMethod2:(id)someArugument;
@optional
-(void)someMethod3:(id)someArgument;
@required //by default
-(void)someMethod4:(id)someArgument;
@end
// sampleClass.m
@interface sampleClass : someSuperClass <myProtocol>
//...
@end