Что вам нужно сделать, это написать и сеттер и геттер.Вы все еще можете @synthesize
получить хранилище.Например:
//.h
@property (strong) id x;
//.m
@synthesize x = _x;
- (id)x
{
@synchronized(self)
{
if (!_x)
{
_x = [[MyX alloc] init];
}
return _x;
}
}
- (void)setX:(id)x
{
@synchronized(self)
{
_x = x;
}
}
Возможно, вам потребуется выполнить дополнительное управление памятью без ARC, и вы можете захотеть создать другую блокировку (вместо self
) или использовать другой метод синхронизации, но это даст вамсуть.