Bruce C. answered 11/12/20
Experienced iOS and Android application developer
Strong references are the default and are in most cases the best choice. The complication comes when one is trying to free the memory used by objects that have strong references to one another. If Object A has a strong reference to Object B and Object B directly or indirectly has a strong reference to Object A, you will not be able to release the memory of either one. Similar things can happen with "closure" code which might refer back to code, such as "safe" in the calling object. Sometimes the amount of memory is small enough and not repeated, so that it is not a big deal and can be ignored, but if the objects are large or there are many copies of them, you will probably want strong references in one direction and weak references back so that you will be able to free up memory successfully.