2010-03-04 2 views
0

네트워크 연결이 있는지 확인하는 코드를 작성하고 있습니다. 간단히 말해서 내가 원하는 이벤트 순서는 다음과 같습니다.스레드의 메모리가 취소되면 어떻게됩니까?

  1. 사용자가 웹 서비스에서 정보를 요청합니다.
  2. 타이머가 시작되고 연결이 존재하면 매초마다 확인합니다. 그렇지 않은 경우보기를 시작하십시오.
  3. 정보가 웹 서비스에서 모두 수신되면 2의 타이머가 종료됩니다.
  4. 내가 웹 서비스의 부하를 가진 것은 그것에 타이머 새 스레드를 필요로하는 동안 타이머 실행을 가지고, 이해하는 것과

. 나는 그 일을하는 법을 잘 알고 있습니다. 내가 이해하는 것부터 그 스레드를 끝내기 위해 나는 [스레드 취소]라고 부른다. 해당 스레드 내에서 메모리 관리를 어떻게 처리합니까? 거기에는 타이머가있었습니다.

내 다른 스레드 자체 종료, 그리고 때 모든 내용을 해제합니다. 취소와 함께 할 수있는 방법이 있습니까? 감사.

답변

1

UIKit 구성 요소는 스레드로부터 안전하다는 보장이 없으므로 주 스레드에서 UIKit을 사용하여 유지해야합니다. 따라서 타이머와 경고가 주 스레드에 있고 네트워크 트래픽이 백그라운드 스레드에 있습니다. 백그라운드 스레드는 performSelectorOnMainThread: 변형 중 하나를 사용하여 주 스레드와 통신합니다. 비슷한 기능을 통해 UI와 통신하고 알림 자체를 시도하지 않는 한 백그라운드 스레드에서 타이머를 사용할 수 있습니다. 주 스레드에서 백그라운드 스레드로 통신한다는 측면에서 performSelector:onThread 메소드를 살펴보십시오.

메모리 측면에서 새 스레드의 진입 점에 새 자동 릴리스 풀을 만들고 스레드 끝에 해당 풀을 배출합니다. 스레드 자체 내에서 주 스레드에서와 똑같이 메모리를 관리하며 스레드가 종료되면 모든 메모리가 해제됩니다.

자세한 내용은 NSThread 문서를 확인하십시오. Here is 자동 복구 풀에 대한 메모가있는 Apple의 메모리 관리 문서

관련 문제