By using the weak keyword we are now preventing a retain cycle by not increasing the delegate’s retain count by 1, and we are also telling ARC to zero-out the pointer to object once it’s de-allocated.