Shared Instance - это процесс, с помощью которого вы можете получить доступ к одному и тому же экземпляру или объекту класса в любом месте проекта.Основная идея заключается в том, чтобы при каждом вызове метода возвращать один и тот же объект, чтобы значения / свойства, хранящиеся в экземпляре, можно было использовать в любом месте приложения.
Это можно сделать в 2 простых процесса:следует: -
1) Использование статической переменной, инициализированной только один раз
@implementation SharedInstanceClass
static SharedInstanceClass *sharedInstance = nil;
+ (id)sharedInstanceMethod
{
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [SharedInstanceClass new];
}
}
return sharedInstance;
}
@end
2) Использование GCD: -
+ (id)sharedInstance{
static dispatch_once_t onceToken;
static SharedInstanceClass *sharedInstance = nil;
dispatch_once(&onceToken, ^{
sharedInstance = [SharedInstanceClass new];
});
return sharedInstance;
}
Они должны вызываться как: -
SharedInstanceClass *instance = [SharedInstanceClass sharedInstance];
Таким образом, каждый раз один и тот же экземпляр будет возвращен из функции, а значения, установленные для свойств, будут сохранены и могут использоваться в любом месте приложения.
С уважением,