У меня есть следующий код:Как инициализировать потокобезопасную переменную в `init`?
{
NSObject *_object;
}
- (instancetype)init {
if (self = [super init]) {
_object = [[NSObject alloc] init];
}
return self;
}
- (NSObject*)object {
return _object;
}
Если метод object
вызывается из второго потока после init
завершил и вернулся, как я знаю, что назначение на _object
в init
будет видно, и это на самом деле не возвращается неназначенный указатель?
Каков внутренний механизм, который гарантирует это?
Меня не интересует содержимое массива. Это отдельная проблема. Мой вопрос касается видимости задания '_array' в' init'. Если я 'init' в потоке A и вызывается метод в потоке B, это метод, гарантирующий, что вы увидите' nil' для '_array'. – Monstieur
Я не имею в виду содержимое, я имею в виду первоначальное создание массива в 'init'. То, что я получаю, не нуждается в механизме блокировки в вашем методе 'init'. – Joe
Как это частично построено? '[NSMutableArray array]' создает и возвращает пустой массив. Это объект, который я хочу получить. – Monstieur