[英]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.