我想寫一個類,我可以繼承有一個即時單例。這是迄今爲止我所擁有的。它會一直工作,直到其中一個子類通過sharedInstance調用另一個子類,這會導致最終耗盡內存的巨大循環。Objective-C Singleton超類?
任何想法?
static NSMutableDictionary *sharedInstances = nil;
@implementation Singleton
+ (Singleton*)sharedInstance
{
[Singleton initSharedInstances];
Class myClass = [self class];
Singleton * sharedInstance = [sharedInstances objectForKey:myClass];
@synchronized(myClass)
{
if (sharedInstance == nil)
{
sharedInstance = [[myClass alloc] init];
[sharedInstances setObject:sharedInstance forKey:myClass];
}
}
return sharedInstance;
}
+ (void) initSharedInstances
{
if (sharedInstances == nil)
{
sharedInstances = [[NSMutableDictionary alloc] init];
}
}
@end
完全一致;我發現所有單例類中的方法重寫通常都很愚蠢。它可能* *可能*在某些類中有意義,這個框架將被衆多你不認識的人使用。爲了你自己的東西?把事情簡單化!! – bbum 2011-02-13 03:05:13