Что происходит с памятью потока, когда он отменяется? - PullRequest
0 голосов
/ 05 марта 2010

Я пишу код для проверки наличия сетевого подключения. Короче говоря, порядок событий, которые я хочу, происходит следующим образом:

  1. Пользователь запрашивает информацию у веб-службы.
  2. Таймер запускается и проверяет каждую секунду, существует ли соединение. Если это не так, создайте представление.
  3. Когда вся информация получена от веб-службы, таймер на 2 заканчивается.

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

Мой другой поток сам завершается, и когда он это делает, он освобождает все свое содержимое. Есть ли способ сделать это с помощью отмены? Спасибо.

1 Ответ

1 голос
/ 05 марта 2010

Вам нужно будет что-нибудь сохранить с помощью UIKit в главном потоке, поскольку компоненты UIKit не гарантируют поточно-ориентированную безопасность. Итак, ваш таймер и оповещение находятся в вашем основном потоке, ваш сетевой трафик - в фоновом потоке. Фоновый поток будет взаимодействовать с основным потоком, используя один из вариантов performSelectorOnMainThread:. Конечно, вы можете использовать таймер в фоновом потоке, если он взаимодействует с вашим пользовательским интерфейсом через аналогичную функцию и не пытается сделать само предупреждение. С точки зрения коммуникации из основного потока в фоновые потоки взгляните на методы performSelector:onThread.

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

Для получения более подробной информации ознакомьтесь с документами NSThread. Вот Документ по управлению памятью от Apple с примечаниями по пулам автоматического выпуска

...