iPhone — обработка памяти с несколькими представлениями

Вот фрагмент кода из книги по изучению iPhone SDK. Он использует пример 2 представлений. Он проверяет, какое представление используется, и освобождает другое.

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning]; // Releases the view if it
    // doesn't have a superview

    // Release anything that's not essential, such as cached data
    if (self.blueViewController.view.superview == nil)
        self.blueViewController = nil;
    else
       self.yellowViewController = nil;
}

Мой вопрос: если у моего приложения много представлений, например 15, нужно ли мне проверять каждое представление, как указано выше, и освобождать то, что не используется? Или в этом случае используется другая техника?»


person david    schedule 23.02.2010    source источник


Ответы (1)


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

В случае множества представлений, которые использует ваше приложение, мой первый вопрос будет заключаться в том, как часто переключаются представления? Если пользователь какое-то время остается в том или ином представлении, может быть лучше освободить другие представления, когда вы переводите их с экрана, чтобы упреждающе предоставить вашему приложению как можно больше свободной памяти. В этом случае пример из книги действительно не будет применяться, так как все «кэшированные» представления уже будут очищены. Если они быстро переключаются между представлениями, то лучше оставить внеэкранные представления (настройка нового представления несколько затратна). В этом случае вам нужно будет следовать примеру книги в событии нехватки памяти.

person fbrereto    schedule 23.02.2010
comment
Большое спасибо, вы помогли многое прояснить. Так что, если я знаю, что пользователь какое-то время будет в одном представлении, как только это представление загрузится, я должен освободить предыдущее представление из памяти? - person david; 23.02.2010
comment
Это был бы маршрут, по которому я бы пошел. - person fbrereto; 23.02.2010