繁体   English   中英

在Objective-C中使用单例的类方法

[英]Class Methods Using Singleton in Objective-C

当使用单例时,我会一遍又一遍地遇到相同的代码,例如:

[[SomeManager sharedInstance] stringForKey:@"someKey"];

在我看来,只写[SomeManager stringForKey:@"someKey"];会比较干净[SomeManager stringForKey:@"someKey"];

我当前的stringForKey方法的stringForKey是:

- (NSString *)stringForKey:(NSString *)key {
    if (self.localeDictionary) {
        return [self stringByStrippingHTML:[self safeStringForKey:key]];
    } else return nil;
}

如果仅将其更改为类方法,则会遇到一些错误。 我可以通过编写以下代码来减轻所有错误:

+ (NSString *)stringForKey:(NSString *)key {
    SomeManager *theManager = [SomeManager sharedManager];
    if (theManager.localeDictionary) {
        return [theManager.localeDictionary stringByStrippingHTML:[theManager.localeDictionary safeStringForKey:key]];
    } else return nil;
}

我的问题是我是否做错了什么。

编辑:使用本地变量更新类方法。

当然,您会得到错误,因为在类方法中“自身”不是实例,但是在MyClass类的类方法中的类-[self whatEver]与类方法[MyClass whatEver]相同。

我个人不希望在三行代码中对[SomeManager sharedManager]进行三个调用。 尤其重要的是,它使调试成为噩梦。 只需将sharedManager分配给局部变量即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM