'da aynı adı taşıyan sınıf yöntemi ve örnek yöntemi İyi çalışan bir bildirim sorunu için bir çözüm var, ama korkarım kötü bir fikir olabilir.Objective-C
Bir sınıfın her örneği ve sınıfın kendisi tarafından ele alınması gereken bir bildirim aldım. Bunu işlemek için, hem sınıfın hem de sınıfın örneklerine göre bir bildirim için kayıt yapıyorum. Aynı bildirim olduğu için, sınıf ve örnek yöntemini aynı şekilde adlandırdım. Bu, bildirim işleyicilerinin nasıl adlandırıldığını belirlediğimiz standardı izler.
Bu kötü bir fikir mi? Kaybolduğum bir saklı var. Gelecekteki geliştiricilerin dikkatini dağıtacağım mı?
+ (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];
}
}
Süper soru. Binlerce puanım yok, ama diyebilirim ki, ihtiyaç ve uygulama çok farklı olduğundan, örnek ve sınıf yöntemleri çatışmayacak. –