Tôi có giải pháp cho vấn đề thông báo hoạt động tốt, nhưng tôi sợ có thể là một ý tưởng tồi.Phương pháp và phương pháp lớp học có cùng tên trong Mục tiêu-C
Tôi có thông báo cần được xử lý bởi từng trường hợp của một lớp và theo chính lớp đó. Để xử lý điều này, tôi đăng ký một thông báo bởi cả lớp và các thể hiện của lớp. Vì đó là thông báo chính xác, tôi đã đặt tên cho lớp và phương thức thể hiện giống nhau. Điều này tuân theo tiêu chuẩn chúng tôi đã đặt cho cách trình xử lý thông báo được đặt tên.
Đây có phải là ý tưởng tồi không? Có một số got'ca ẩn mà tôi đang thiếu. Tôi có thể nhầm lẫn giữa các nhà phát triển trong tương lai không?
+ (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];
}
}
Siêu câu hỏi. Tôi không có hàng ngàn điểm, nhưng tôi có thể nói, các thể hiện và các phương thức lớp sẽ không xung đột, vì nhu cầu và triển khai của chúng rất khác nhau. –