如何在iOS中发布Singleton对象?

时间:2015-04-24 12:24:45

标签: ios objective-c singleton automatic-ref-counting

我创建了单例对象,在某个时间点必须释放单例对象。如何在非ARC和ARC中释放单例对象?

2 个答案:

答案 0 :(得分:0)

如果将单个实例作为类的全局变量,例如:

static MyClass *_instance = nil;

而不是static类方法中的sharedInstance本地,那么你可以像这样创建一个destroy方法:

+ (void)destroyInstance
{
    _instance = nil;
}

然而,我能看到的一个问题是使用通常用于确保原子初始化的dispatch_once_t;我认为在这种情况下你需要避免使用它,因为它无法重置它。如果您永远不打算再次致电sharedInstance,这可能不是问题。

答案 1 :(得分:-1)

@interface MySingleton : NSObject
static dispatch_once_t predicate;
static MySingleton *sharedSingletonInstance = nil;

@implementation MySingleton

+ (MySingleton *)ShareInstance {
    dispatch_once(&predicate, ^{
        sharedSingletonInstance = [[self alloc] init];
    });
    return sharedSingletonInstance;
}

+ (void)destroyMySingletonInstance {
    sharedSingletonInstance = nil;
    predicate = 0;
}
- (void)dealloc {
    NSLog(@"------");
}

// TODO
...
@end