Objective-C Language
श्रेणियाँ
खोज…
वाक्य - विन्यास
@interface ClassName (categoryName) // क्लासनेम को बढ़ाया जाने वाला वर्ग है
// विधि और संपत्ति की घोषणाएं
@समाप्त
टिप्पणियों
विधि नाम की xyz_
से बचने के लिए, उपसर्गों का उपयोग करने की सिफारिश की जाती है (उदाहरण में xyz_
)। यदि समान नाम वाली विधियाँ मौजूद हैं, तो यह अपरिभाषित है जिसका उपयोग रनटाइम में किया जाएगा।
सरल श्रेणी
NSArray पर एक साधारण श्रेणी का इंटरफ़ेस और कार्यान्वयन, फ़िल्टर नाम, एक एकल विधि के साथ, जो संख्याओं को फ़िल्टर करती है।
यह सुनिश्चित करने के लिए कि हम भविष्य के NSArray
तरीकों को अधिलेखित न करें, विधि में एक उपसर्ग ( PF
) जोड़ना अच्छा अभ्यास है।
@interface NSArray (PFFilter)
- (NSArray *)pf_filterSmaller:(double)number;
@end
@implementation NSArray (PFFilter)
- (NSArray *)pf_filterSmaller:(double)number
{
NSMutableArray *result = [NSMutableArray array];
for (id val in self)
{
if ([val isKindOfClass:[NSNumber class] && [val doubleValue] >= number)
{
[result addObject:val];
}
}
return [result copy];
}
@end
एक वर्ग विधि की घोषणा
हैडर फ़ाइल UIColor+XYZPalette.h
:
@interface UIColor (XYZPalette)
+(UIColor *)xyz_indigoColor;
@end
और कार्यान्वयन UIColor+XYZPalette.m
:
@implementation UIColor (XYZPalette)
+(UIColor *)xyz_indigoColor
{
return [UIColor colorWithRed:75/255.0f green:0/255.0f blue:130/255.0f alpha:1.0f];
}
@end
एक श्रेणी के साथ एक संपत्ति जोड़ना
संपत्तियों को संबंधित वस्तुओं का उपयोग करके श्रेणियों के साथ जोड़ा जा सकता है, उद्देश्य-सी रनटाइम की एक विशेषता।
ध्यान रखें कि संपत्ति की घोषणा retain, nonatomic
objc_setAssociatedObject
घोषणा objc_setAssociatedObject
के अंतिम तर्क से मेल खाती है। स्पष्टीकरण के लिए किसी अन्य मौजूदा वस्तु से ऑब्जेक्ट संलग्न करें देखें।
#import <objc/runtime.h>
@interface UIViewController (ScreenName)
@property (retain, nonatomic) NSString *screenName;
@end
@implementation UIViewController (ScreenName)
@dynamic screenName;
- (NSString *)screenName {
return objc_getAssociatedObject(self, @selector(screenName));
}
- (void)setScreenName:(NSString *)screenName {
objc_setAssociatedObject(self, @selector(screenName), screenName, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
प्रोटोकॉल के अनुरूप
आप उनकी कार्यक्षमता बढ़ाने के लिए मानक कक्षाओं में प्रोटोकॉल जोड़ सकते हैं:
@protocol EncodableToString <NSObject>
- (NSString *)toString;
@end
@interface NSDictionary (XYZExtended) <EncodableToString>
@end
@implementation NSDictionary (XYZExtended)
- (NSString *)toString {
return self.description;
}
@end
जहां XYZ
आपकी परियोजना का उपसर्ग है
XCode पर एक श्रेणी बनाएँ
श्रेणियां वास्तविक वस्तु को उप-वर्गीकृत या परिवर्तित किए बिना किसी वस्तु में कुछ अतिरिक्त कार्यक्षमता जोड़ने की क्षमता प्रदान करती हैं।
उदाहरण के लिए हम कुछ कस्टम फोंट सेट करना चाहते हैं। आइए एक ऐसी श्रेणी बनाएं जो कार्यक्षमता को UIFont
वर्ग में जोड़े। अपनी XCode परियोजना खोलें, File
-> New
-> File
पर क्लिक File
और Objective-C file
, अगला क्लिक करें अपनी श्रेणी का नाम दर्ज करें "CustomFont" फ़ाइल प्रकार को श्रेणी और वर्ग के रूप में चुनें UIFont के रूप में फिर "अगला" पर क्लिक करें और उसके बाद "बनाएं" पर क्लिक करें। "
श्रेणी विधि घोषित करें: -
नई श्रेणी की हेडर फ़ाइल देखने के लिए "UIFont + CustomFonts.h" पर क्लिक करें। विधि घोषित करने के लिए इंटरफ़ेस में निम्न कोड जोड़ें।
@interface UIFont (CustomFonts)
+(UIFont *)productSansRegularFontWithSize:(CGFloat)size;
@end
अब श्रेणी विधि को लागू करें: -
श्रेणी के कार्यान्वयन फ़ाइल को देखने के लिए "UIFont + CustomFonts.m" पर क्लिक करें। ProductSansRegular फ़ॉन्ट सेट करेगा एक विधि बनाने के लिए निम्न कोड जोड़ें।
+(UIFont *)productSansRegularFontWithSize:(CGFloat)size{
return [UIFont fontWithName:@"ProductSans-Regular" size:size];
}
अपनी श्रेणी आयात करें
#import "UIFont+CustomFonts.h"
अब लेबल फ़ॉन्ट सेट करें
[self.label setFont:[UIFont productSansRegularFontWithSize:16.0]];