Я реализовал объект singleton с использованием обычного шаблона. Мой вопрос: возможно ли вернуть этот объект в нуль, так что на более поздней странице [MySingleton sharedInstance] объект будет повторно инициализирован?Можно ли установить singleton обратно в ноль?
// Get the shared instance and create it if necessary.
+ (MySingleton *)sharedInstance {
static dispatch_once_t pred;
static MySingleton *shared = nil;
dispatch_once(&pred, ^{
shared = [[MySingleton alloc] init];
});
return shared;
}
// We can still have a regular init method, that will get called the first time the Singleton is used.
- (id)init
{
self = [super init];
if (self) {
// Work your initialising magic here as you normally would
}
return self;
}
Я думаю, что
MySingleton *shared = [MySingleton sharedInstance];
shared = nil;
только задает локальный указатель shared
на nil
. В конце концов, shared
объявлен как static
.
Как я и предполагал. Спасибо за хороший ответ. – SkeetSkeet