2010-02-24 2 views
0

Я читал об этой функции didReceiveMemoryWarning, что на самом деле не помогло. Я хотел бы показать UIAlert View, чтобы сообщить пользователю, что действие, которое он собирается предпринять, приведет к проблемам с памятью.iPhone Memory Alert

Таким образом, кроме сбоев, что является неприятным способом информировать пользователя о наличии памяти. Предупреждение получено, существует ли возможная реализация UIAlertView?

ответ

3

В своем классе делегат приложения (например, MyApplicationAppDelegate.m) реализовать метод didReceiveMemoryWarning:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{ 
    // Show an alert 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" 
                message:@"Running low on memory" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 

    [alert show]; 
    [alert release]; 
} 
+0

предотвратить ли это приложение от сбой после пользователь нажимает «ОК»? – erastusnjuki

+0

Нет. Все, что он делает, это предупреждение. Чтобы предотвратить сбой, вам нужно что-то сделать, чтобы восстановить некоторую память, например, избавиться от неиспользуемых объектов и представлений. – pheelicks

0

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

Если есть некоторые действия, которые вы знаете о пользователе, который приведет к проблемам с памятью, вы должны удержать их от принятия этого действия или просто предупредить их самостоятельно, когда они собираются предпринять действие (с помощью aler tview).

+0

Это единственный выход? – erastusnjuki

+0

Ну, похоже, то, о чем вы просите, это для iPhone OS, чтобы предварительно проанализировать любой код, который собирается запускаться («на лету») в результате действия пользователя, и до того, как этот код определит (опять же, на летать), что при запуске кода произойдет проблема с памятью. Я не уверен на 100%, но я был бы шокирован, если бы был способ сделать это. Вот почему у Apple есть рекомендации по хорошей практике кодирования и управлению памятью. Если ОС могут «смотреть вперед» или «смотреть в будущее» и определить, что, запуская некоторый код, произошла ошибка, ничто никогда не потерпит крах. – cmcculloh

1

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

Кроме того, вы также хотите реализовать didReceiveMemoryWarning на любом контроллере представления, который выделяет МНОГО памяти, так что они могут сделать некоторые уборки и там также

Hopes это помогает :)