Dealloc не вызывается при смене пера - PullRequest
0 голосов
/ 22 февраля 2011

У меня довольно большой проект, в котором я часто меняю перья, используя такой код -

level3 *screen = [[level3 alloc] initWithNibName:@"level3" bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:screen animated:YES];
[screen release];

Когда я меняю перья, не вызывается dealloc (он вызывается только тогда, когда я получаю памятьпредупреждение).Я провел довольно много исследований по этому вопросу, но не могу найти никаких ответов.Кто-нибудь может мне с этим помочь?

1 Ответ

1 голос
/ 22 февраля 2011

Ответ в том, что iOS будет кешировать ваши перья. Он освобождает этот кеш, если попадает в предупреждение о разуме памяти, что вы и наблюдаете.

Имейте в виду, что у вас могут быть случаи, когда вы можете использовать одно и то же перо с одними и теми же объектами несколько раз (например, в ячейке таблицы). Загрузка пера - дорогостоящий процесс по сравнению с сохранением ссылки на объекты в некотором кэше.

...