Еще один замечательный пример того, почему вы должны ...
НИКОГДА не вызывать -retainCount!
retainCount бесполезен, вводит в заблуждение и тратит ваше время.
Вв этом случае причина, по которой счет удержания оказывается «неожиданно» равным нулю, заключается в том, что my.myArray
возвращает nil
. Это происходит потому, что вы никогда не назначаете созданный изменяемый массив для myArray
.
Вам нужно что-то вроде этого (имя класса с заглавной буквы следует соглашению):
MyClass *my = [[MyClass alloc] init];
NSMutableArray *a = [[NSMutableArray alloc] init];
my.myArray = a;
[a addObject:my];
Обратите внимание, что это создает цикл сохранения между my
и массивом.Т.е. вам нужно будет удалять my
из массива вручную (или удалять массив из my
вручную) всякий раз, когда вы выпускаете myArray
, и, конечно, вы не можете сделать это в dealloc
, потому что dealloc
будетникогда не вызывать, пока my
не будет удалено из myArray
.