Рассмотрим следующие два случая:Когда слабая ссылка обновляется до нуля в Objective-C?
// case 1
NSObject *strongOne = [[NSObject alloc] init];
NSObject * __weak weakOne = strongOne;
if (weakOne) {
NSLog(@"weakOne is not nil.");
} else {
NSLog(@"weakOne is nil.");
}
strongOne = nil;
if (weakOne) {
NSLog(@"weakOne is not nil.");
} else {
NSLog(@"weakOne is nil.");
}
Выходы это:
weakOne is not nil.
weakOne is not nil.
И
// case 2
NSObject *strongOne = [[NSObject alloc] init];
NSObject * __weak weakOne = strongOne;
strongOne = nil;
if (weakOne) {
NSLog(@"weakOne is not nil.");
} else {
NSLog(@"weakOne is nil.");
}
Выходы это:
weakOne is nil.
Насколько Я знаю, когда strongOne
освобождается, слабая ссылка на тот же объект должна быть обновлена до nil
.
Мой вопрос: Почему это происходит только в case 2
?
Вы также должны проверить это с помощью Release-build вместо Debug. Результат может быть другим ... –