Рассмотрим следующее:
NSMutableArray *a = [NSMutableArray array];
NSMutableArray *b = [NSMutableArray array];
[a addObject:b];
[b addObject:a];
Когда b
вставляется в a
, b
сохраняется, также a
, когда оно вставляется в b
. Поскольку оба теперь имеют сильную ссылку друг на друга, ни один из них не будет освобожден, если вы не прервете цикл, например, вручную. удаляя одно из другого.
Обратите внимание, что руководство по управлению памятью какао также содержит раздел о циклах хранения и содержит объяснение слабых ссылок , которые помогают при этих проблемах.