gpt4 book ai didi

objective-c - Objective-C中同名的类方法和实例方法

转载 作者:太空狗 更新时间:2023-10-30 03:38:00 25 4
gpt4 key购买 nike

我有一个解决通知问题的方法,效果很好,但我担心这可能不是个好主意。

我有一个通知需要由类的每个实例和类本身处理。为了处理这个问题,我注册了类和类实例的通知。因为它是完全相同的通知,所以我将类和实例方法命名为相同的。这遵循我们为通知处理程序的命名方式设定的标准。

这是个坏主意吗?是否有一些我遗漏的隐藏问题。我会让 future 的开发人员感到困惑吗?

+ (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];
}
}

最佳答案

这就是代码注释的作用:)

在 Objective C 中类方法和实例方法同名没有问题。

我会建议:

  • 修改您的通知方法名称规范以处理此问题(然后使用不同的适当命名的方法处理类通知),或

  • 添加适当的评论来解释正在发生的事情,以便将来可能感到困惑的开发人员受益

关于objective-c - Objective-C中同名的类方法和实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com