When you create an instance of a class, which has a block, it points to that block as a strong reference, and when you reference the object from that block it points to that object with a strong reference, which creates a strong reference cycle.
So if I were to do this:
__weak Employee *weakSelf = self;
myBlock = ^{
NSLog(@"%@", weakSelf);
}
So now, the block has a weak reference to the object, but supposedly it's good practice to create a strong local reference to self inside the block in case the object that self points to is deallocated.
__weak Employee *weakSelf = self;
myBlock = ^{
Employee *innerSelf = weakSelf;
NSLog(@"%@", innerSelf);
}
I wanted to know and make sure that I understand this correctly, so I drew a picture of what I think is happening (If I'm wrong, please correct me):

A corrected visual would be greatly appreciated.
