2013-10-21 4 views
0

AFNetworking을 사용하여 내 서버에 정기적 인 JSON 요청 (사용자 프로필 업데이트 및 변경 사항 확인)을 수행하고 싶습니다.ios 백그라운드 다운로드가 완료되었지만보기가 손상되었습니다.

백그라운드 작업이 실행 중이지만 사용자가 "뒤로"버튼 또는 ViewController를 삭제하는 항목을 밀어 넣으면 어떻게됩니까? 어떻게 관리 할 수 ​​있습니까? 나는 전체 작업 코드를 원하지 않는다 : 그 경우에 나는 결과를 무시하고 사용자가

당신에게

PS 감사보기에 반환 할 때 다시 수행하고 싶습니다 의미한다. 나는 단지 ViewController가 파손되었거나 또는 백그라운드 다운로드 작업 (AFNetworking을 사용하여 실행)을 통해 어떻게 알 수 있는지 알고 싶습니다. 이 질문에 밖으로

+0

시도는 NSUserDefaults에 그 값을 저장하고 사용자가 내가 AFNetworking을 사용한 적이 그보기 – Tendulkar

+0

에 올 때 연결을 다시 시작합니다 ViewController. ViewController를 언로드 할 때 위임 속성을 nil로 설정하면됩니다. – Marc

답변

1

, 당신은보기 컨트롤러의 방법 viewWillDisappear:에서 네트워크 작업에 cancel을 보낼 수 있습니다 : 싱글 소개

.

마찬가지로보기가 표시 될 때 네트워크 요청을 "자동으로 시작하려면"방법 viewWillAppear:을 사용하십시오.

1

확인 : Best architecture for an iOS application that makes many network requests?

간단한 방법은 모든 요청 및 네트워크 백그라운드 작업을 처리하는 사용자 정의 네트워크 관리자 클래스의 싱글 인스턴스를 생성하는 것입니다. 어디서든 (예 :보기 컨트롤러) 어디서든 액세스 할 수 있으며 앱의 전체 런타임 동안 인스턴스를 유지합니다. 실행중인 네트워크 요청을 중지하기 위해 http://en.wikipedia.org/wiki/Singleton_pattern

1

작업을 수행하기 만하면됩니다. 특정 이 나타나는 경우에만 & 인 경우 변경을 시도합니다.

사용을 방법

-(void) viewDidappear{ 
// Initialise Your task here 
} 

-(void) viewWillDisappear{ 
// Destoy(Cancel) the task 
} 
1

하나의 해결책은 NSNotification 메커니즘을 사용하는 방식으로 다운로드를 구현하는 것입니다 :

  1. 리스너로의 ViewController를 설정합니다.

  2. 다운로드 프로세스가 완료되면 알림을 실행하기 위해 bg download를 설정하십시오.

  3. 알림이 실행될 때 VC가 여전히 주변에 있으면 훌륭한 - 은 필요한 것을 처리하고 알림을 처리합니다. 주변에 없다면 아무 일도 일어나지 않습니다. 당신이 그것을 일반적이다 위임 어떤 종류의를 제공하지만 난 가정 하겠어 -

관련 문제