UIViewControllers ... Управление памятью с помощью подвидов - PullRequest
0 голосов
/ 06 января 2012

У меня есть UIViewController, у которого есть несколько подпредставлений, но отслеживание каждого выделенного подпредставления является трудной задачей, так как на самом деле кодер - это не я, и ему нужно обрабатывать потребление памяти.

У меня вопрос, есть ли способ управления памятью, вызывающий рекурсивную функцию, которая удаляет и освобождает все подвиды в UIViewController, не зная действительного ссылочного имени?

Как в коде ниже:

for (UIView* subview in view){  
    [subview removeFromSuperView];  
    [subview release] ;
    subview = nil;   
}

1 Ответ

2 голосов
/ 06 января 2012

Когда вы вызываете removeFromSuperview в представлении, оно автоматически уменьшает счет сохранения (поскольку для суперпредставления больше не требуется ссылка на только что удаленное представление).

Если вы добавили свои представления в суперпредставление стандартным способом, вам больше не нужно делать то, что вы делаете - либо вы добавили свои представления, а затем выпустили их, либо ваши представления являются свойствами, и релиз случится позже.

Код, который вы предлагаете (рекурсивный цикл для всех подпредставлений), является плохой идеей , потому что вы на самом деле не знаете, безопасно ли выпустить ваше подпредставление или нет. Вы можете легко вызвать плохой доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...