我创建了单例对象,在某个时间点必须释放单例对象。如何在非ARC和ARC中释放单例对象?
答案 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