如何实现与ARC兼容的Objective-C单例?

如何实现与ARC兼容的Objective-C单例?

在Xcode 4.2中使用自动引用计数(ARC)时,如何转换(或创建)编译和行为正确的单例类?



慕田峪7331174
浏览 547回答 3
3回答

森栏

完全一样,你(应该)已经这样做了:+ (instancetype)sharedInstance{     static MyClass *sharedInstance = nil;     static dispatch_once_t onceToken;     dispatch_once(&onceToken, ^{         sharedInstance = [[MyClass alloc] init];         // Do any other initialisation stuff here     });     return sharedInstance;}

回首忆惘然

如果你想根据需要创建其他实例。这个:+ (MyClass *)sharedInstance{     static MyClass *sharedInstance = nil;     static dispatch_once_t onceToken;     dispatch_once(&onceToken, ^{         sharedInstance = [[MyClass alloc] init];         // Do any other initialisation stuff here     });     return sharedInstance;}否则,你应该这样做:+ (id)allocWithZone:(NSZone *)zone{     static MyClass *sharedInstance = nil;     static dispatch_once_t onceToken;     dispatch_once(&onceToken, ^{         sharedInstance = [super allocWithZone:zone];     });     return sharedInstance;}

吃鸡游戏

这是ARC和非ARC的版本如何使用:MySingletonClass.h@interface MySingletonClass : NSObject+(MySingletonClass *)sharedInstance;@endMySingletonClass.m#import "MySingletonClass.h"#import "SynthesizeSingleton.h"@implementation MySingletonClassSYNTHESIZE_SINGLETON_FOR_CLASS(MySingletonClass)@end
打开App,查看更多内容
随时随地看视频慕课网APP