#iphone #objective-c
#iPhone #objective-c
Вопрос:
Пожалуйста, кто-нибудь может сказать мне, какова точка выхода приложения? Я разработал приложение, в этом приложении я передаю массив во всех представлениях (используемых во всем приложении), и оно работает отлично. Но я хочу освободить этот массив при выходе из приложения.
Спасибо.
Комментарии:
1. нужна ли точка завершения приложения????
2. @KingofHeaven: да. Я хочу знать, когда мой массив должен быть выпущен, поскольку он используется во всем приложении?
3. конечная точка приложения — (void)applicationWillTerminate:(UIApplication *)application{}, вам не нужно ничего выпускать при выходе из приложения. Система справится с этим.
4. Но мой массив находится в поле зрения, так как я передам его в AppDelegate для выпуска? Или вы только скажите мне, где этот массив должен быть выпущен, поскольку он используется во всем приложении?
Ответ №1:
В iOS с многозадачностью у вас нет четкой точки выхода. Ваше приложение может быть удалено в любое время без предварительного уведомления, если оно работает в фоновом режиме. Итак, если вам нужно сохранить настройки, вам нужно сделать это в методах делегирования приложений applicationWillTerminate:
(iOS без многозадачности) и applicationDidEnterBackground:
(iOS с многозадачностью). Это также хорошая идея для экономии applicationDidResignActive:
. Смотрите ссылку на UIApplicationDelegate.
Обратите внимание, что все эти события также содержат NSNotifications, на которые вы можете подписаться в любом классе, который вам нравится. Смотрите раздел уведомлений в справочнике UIApplication.
Что касается освобождения вашего массива: вы должны освободить все свои данные в dealloc
методах ваших классов (да, то же самое относится и к делегату приложения).
Ответ №2:
- (void)applicationWillTerminate:(UIApplication *)application {
/*
Called when the application is about to terminate.
See also applicationDidEnterBackground:.
*/
}
это в вашем классе делегирования приложения.
Комментарии:
1. Но мой массив находится в поле зрения, так как я передам его в AppDelegate для выпуска? Или вы просто скажите мне, где этот массив должен быть выпущен, поскольку он используется во всем приложении?
2. Если это на ваш взгляд, то, вероятно, вы освобождаете его при освобождении последнего представления, которое собирается его использовать.
3. @Archana Chaurasia: Вам нужно освободить массив в
dealloc
вашем представлении.4. @PraveenS Я поставил точку останова в этом методе, но она не доходит до точки останова, и я использую iOS 8.1. Заранее спасибо!
Ответ №3:
dealloc
В вашем приложении делегат должен это сделать. Просто добавьте
- (void)dealloc
{
[yourArray release];
}
в вашем делегате приложения….
Комментарии:
1. Но мой массив находится в поле зрения, так как я передам его в AppDelegate для выпуска? Или вы просто скажите мне, где этот массив должен быть выпущен, поскольку он используется во всем приложении?
2. Если вы используете один и тот же массив во всем приложении, сделайте его переменной экземпляра вашего AppDelegate и отпустите в dealloc
Ответ №4:
Массив будет автоматически освобожден при завершении работы приложения, поскольку система освобождает всю память приложения. Вам не нужно беспокоиться об этом.