如何实现与ARC兼容的Objective-C单例?在Xcode 4.2中使用自动引用计数(ARC)时,如何转换(或创建)编译和行为正确的单例类?
3 回答
森栏
TA贡献1810条经验 获得超5个赞
完全一样,你(应该)已经这样做了:
+ (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;}
回首忆惘然
TA贡献1847条经验 获得超11个赞
如果你想根据需要创建其他实例。这个:
+ (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;}
吃鸡游戏
TA贡献1829条经验 获得超7个赞
如何使用:
MySingletonClass.h
@interface MySingletonClass : NSObject+(MySingletonClass *)sharedInstance;@end
MySingletonClass.m
#import "MySingletonClass.h"#import "SynthesizeSingleton.h"@implementation MySingletonClassSYNTHESIZE_SINGLETON_FOR_CLASS(MySingletonClass)@end
- 3 回答
- 0 关注
- 546 浏览
添加回答
举报
0/150
提交
取消