Я реализовал одноэлементный объект, используя обычный шаблон. Мой вопрос: возможно ли вернуть этот объект в нуль, так что на более поздней странице [MySingleton sharedInstance] объект будет повторно инициализирован?
// 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
.