如何实现与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 关注
- 593 浏览
添加回答
举报
0/150
提交
取消
