응용 프로그램을 종료하기 전에 iPhone 애플리케이션 상태를 보존하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1811696

문제

탭 바와 내비게이션 컨트롤러가있는 iPhone 응용 프로그램을 개발했습니다.

지금은 잘 작동합니다.

이제 응용 프로그램이 종료하기 전에 상태를 저장하기를 원합니다.

6 개의 탭이 있고 들어오는 호출이 오면 앱을 다시 시작한 후 마지막으로 선택한 탭을 선택해야합니다.

나는이 주제에 대한 몇 가지 질문을 보았지만 그들을 본 후에는 더 혼란 스러웠다.

누구 든지이 작업을 수행하는 직접적인 방법을 말할 수 있습니까?

도움이 되었습니까?

해결책

"하나의 크기에 맞는"것은 없다.

그러나 좋은 상태 보존 솔루션을 개발하기위한 올바른 길을 가야하는 몇 가지 일반적인 팁과 포인터가 있습니다.

  1. 일반적으로 상태를 저장하기 위해 모든 작업을 수행하려고합니다. applicationWillTerminate: 앱 대의원에서 또는 듣기 위해 UIApplicationWillTerminateNotification 다른 수업에서.

  2. nsuserDefaults를보십시오. NSUSERDEFAULTS를 사용하여 키/값 쌍을 저장할 수 있지만 (nsDictionary와 유사하지만, nsuserDefaults에서 NSCoding을 구현하는 개체 만 저장할 수 있음) 선호도 또는 기타 정보와 관련하여 저장할 수 있습니다. NSUSERDEFAULTS를 사용하여 상태 정보를 저장하십시오. 한 가지주의 사항 - 많은 양의 데이터를 저장하는 데 NSUSERDEFAULTS를 사용해서는 안됩니다. 이는 응용 프로그램의 출시 시간이 느려 지므로 (값이 시작될 때 값이로드되었으므로).

  3. 귀하의 사례에 더 구체적으로 ... 응용 프로그램간에 선택한 탭을 보존하는 것만으로도 구현해야합니다. applicationWillTerminate: NSUSERDEFAULTS를 사용하여 선택한 탭 색인을 저장하십시오. 그럼, 당신의 applicationDidFinishLaunching: 구현, 해당 NSUSERDEFAULTS 키의 존재를 확인하고 UITABBARCONTROLLER의 선택한 인덱스가 존재하는 경우 저장된 값으로 설정합니다.

  4. 예를 들어 선택한 탭의 탐색 스택도 복원하려면 탐색 스택을 정확하게 재구성 할 수 있도록 충분한 정보를 저장해야합니다. NSUSERDEFAULTS에 저장 해야하는 정보는 응용 프로그램의 구조와 내비게이션 스택 내에서 View Controller 계층의 반복에 매우 구체적이므로 일반적인 의미에서 정량화하기가 어렵습니다.

  5. 응용 프로그램이 닫힐 때 손실되지 않기를 원하지 않는 사용자 데이터를 입력 할 수있는 입력을 포함하여보다 일반적인 탐색 스택을 복원 해야하는 경우 (예 : 사용자가 어떤 종류의 새로운 레코드를 작성하는 경우) 앱 대의원 수준에서 응용 프로그램 상태를 저장하지 않고 뷰 컨트롤러 클래스를 듣는 데 중점을 둡니다. UIApplicationWillTerminateNotification 그리고 그들 자신의 특정 국가 절약을 수행하십시오. 또한 내비게이션 계층 구조를 복원하기 위해 종료시 뷰 컨트롤러 당 저장된 정보를 사용하기위한 일부 메커니즘을 결정해야합니다. 이것은 필요에 따라 필요하지 않을 수있는보다 복잡한 기술입니다.

불행히도이 답변은 특히 더 일반적이고 복잡한 경우에 대해 약간의 성가신 것입니다. 왜냐하면이 질문에 대한 일반적인 해결책은 응용 프로그램 구조에 크게 의존하기 때문에이 질문에 대한 일반적인 해결책이 없기 때문입니다.

다음은 nsuserDefaults를 사용하는 예입니다. http://robertcarlsen.net/2009/06/19/overly-simplistic-saving-in-of-for-iphone-847

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top