вызов метода 'subviews' для contentView ячейки увеличивает количество сохраняемых данных - PullRequest
0 голосов
/ 25 октября 2010

Я не знаю, что здесь происходит, но у меня есть следующий код в моем методе init:

NSLog(@"retain count in init before alloc: %d", [game1CustomEntityInfoControl retainCount]);

game1CustomEntityInfoControl = [[CustomEntityInfoControl alloc] initWithFrame:CGRectZero];

NSLog(@"retain count in init after alloc: %d", [game1CustomEntityInfoControl retainCount]);

[[self contentView] addSubview:game1CustomEntityInfoControl];

NSLog(@"retain count in init after adding to superview: %d", [game1CustomEntityInfoControl retainCount]);

Я знаю, что должен выпустить game1CustomEntityInfoControl, так как superview сохраняет объект, но оставляю его длясейчас.

Тогда в моем методе layoutSubviews у меня есть:

// We always call this, the table view cell needs to do its own work first
[super layoutSubviews];

NSLog(@"retain count as soon as you enter layoutSubviews: %d", [game1CustomEntityInfoControl retainCount]);

[[self contentView] subviews];

NSLog(@"retain count in layoutSubviews after calling subviews on contentView: %d", [game1CustomEntityInfoControl retainCount]);

Это вывод:

2010-10-24 15: 14: 08.598 Сангаку [8592:207] сохранить счет в init до выделения: 0

2010-10-24 15: 14: 08.603 Сангаку [8592: 207] сохранить счет в init после alloc: 1

2010-10-24 15: 14: 08.611 Сангаку [8592: 207] сохраняет счет в init после добавления в суперпредставление: 2

2010-10-24 15: 14: 08.616 Сангаку [8592: 207] сохраняет счет, как только вывведите layoutSubviews: 2

2010-10-24 15: 14: 08.621 Сангаку [8592: 207] сохранить счет в layoutSubviews после вызова подпредставлений для contentView: 3

Посмотрите на последнюю строку вывода,Как количество сохранений достигло 3?Внутренние подпредставления выполняют ли какое-то распределение, которое возвращается как автоматически выпущенное?

Спасибо

1 Ответ

1 голос
/ 25 октября 2010

AFIAK, вы не можете полагаться на retainCount, который ведет себя таким образом.Внутренние компоненты инфраструктуры Какао могут быть не связаны с вашими объектами, возможно, в другом потоке / асинхронно.

...