Когда вы создаете экземпляр класса, который имеет блок, он указывает на этот блок как сильную ссылку, а когда вы ссылаетесь на объект из этого блока, он указывает на этот объект с сильной ссылкой, что создает сильную ссылку цикл.Блоки и объекты с сильным опорным циклом?
Так что, если бы я это сделать:
__weak Employee *weakSelf = self;
myBlock = ^{
NSLog(@"%@", weakSelf);
}
Итак, блок имеет слабую ссылку на объект, но, мол, это хорошая практика, чтобы создать сильную локальную ссылку на себя внутри блока в случае объект, на который указывает себя, освобождается.
__weak Employee *weakSelf = self;
myBlock = ^{
Employee *innerSelf = weakSelf;
NSLog(@"%@", innerSelf);
}
Я хотел бы знать, и убедиться, что я понимаю правильно, поэтому я нарисовал картину того, что я думаю, что происходит (если я ошибаюсь, поправьте меня):
Исправленный визуал был бы очень признателен.