में समान नाम के साथ क्लास विधि और इंस्टेंस विधि मेरे पास एक अधिसूचना समस्या का समाधान है जो अच्छी तरह से काम करता है, लेकिन मुझे डर है कि यह एक बुरा विचार हो सकता है।उद्देश्य-सी
मेरे पास एक अधिसूचना है जिसे कक्षा के प्रत्येक उदाहरण और कक्षा द्वारा स्वयं संभालने की आवश्यकता है। इसे संभालने के लिए, मैं कक्षा के वर्ग और उदाहरण दोनों द्वारा अधिसूचना के लिए पंजीकरण कर रहा हूं। चूंकि यह एक ही अधिसूचना है, इसलिए मैंने कक्षा और आवृत्ति विधि का नाम दिया है। यह उस मानक का पालन करता है जिसे हमने सेट किया है कि अधिसूचना हैंडलर का नाम कैसे दिया जाता है।
क्या यह एक बुरा विचार है? क्या कुछ छिपी हुई है जो मुझे याद आ रही है। क्या मैं भविष्य के डेवलपर्स से बिल्ली को भ्रमित कर दूंगा?
+ (void)initialize
{
if (self == [SICOHTTPClient class]) {
[[self notificationCenter] addObserver:self
selector:@selector(authorizationDidChangeNotification:)
name:SICOJSONRequestOperationAuthorizationDidChangeNotification
object:nil];
}
}
- (id)initWithBaseURL:(NSURL *)url
{
self = [super initWithBaseURL:url];
if (self) {
self.parameterEncoding = AFJSONParameterEncoding;
[self registerHTTPOperationClass:[SICOJSONRequestOperation class]];
[self setDefaultHeader:@"Accept" value:@"application/json"];
if ([[self class] defaultAuthorization])
[self setDefaultHeader:@"Authorization" value:[[self class] defaultAuthorization]];
[[[self class] notificationCenter] addObserver:self
selector:@selector(authorizationDidChangeNotification:)
name:SICOJSONRequestOperationAuthorizationDidChangeNotification
object:nil];
}
return self;
}
- (void)dealloc
{
[[[self class] notificationCenter] removeObserver:self
name:SICOJSONRequestOperationAuthorizationDidChangeNotification
object:nil];
}
#pragma mark Notifications
- (void)authorizationDidChangeNotification:(NSNotification *)notification
{
NSString *authorization = notification.userInfo[SICOJSONRequestOperationAuthorizationKey];
if ([authorization isKindOfClass:[NSString class]]) {
[self setDefaultHeader:@"Authorization" value:authorization];
} else {
[self clearAuthorizationHeader];
}
}
+ (void)authorizationDidChangeNotification:(NSNotification *)notification
{
NSString *authorization = notification.userInfo[SICOJSONRequestOperationAuthorizationKey];
if ([authorization isKindOfClass:[NSString class]]) {
[self setDefaultAuthorization:authorization];
} else {
[self setDefaultAuthorization:nil];
}
}
सुपर प्रश्न। मेरे पास हजारों अंक नहीं हैं, लेकिन मैं कह सकता हूं, उदाहरण और कक्षा के तरीके संघर्ष नहीं करेंगे, क्योंकि उनकी आवश्यकता और कार्यान्वयन बहुत अलग हैं। –