Starting from Delphi Berlin the weak attribute was invented. Which informs the compiler so that it does not call the _Release when going out of scope (scope finalization code generated).
This is very useful when you use VCL components as the implementations of certain interfaces and then pass them somewhere. And sometimes in the places where you use the interface you can get AV, because of the object destruction order or any other similar reason.
So wherever you use such references just do the folowing code just before it goes out of scope:
This will safely clear the reference without calling the _Release.
Read about weak there.