2010-03-12 3 views
0

내 응용 프로그램이 종료되고 아래 2 가지 다른 버전에 대해 약간 혼란 스러울 때 일부 설정을 저장하려고합니다. MVC 패턴을 더 잘 맞추려면 viewController에서 버전을 사용해야한다고 생각합니다. 나는 그 전화가 사용될 때 appDelegate에서 많은 사람들이하지 않는 것 같아서 궁금하다.applicationWillTerminate, delegate 또는 view?

AppDelegate에

-(void)applicationWillTerminate:(UIApplication *)application { 
    NSLog(@"_deli: applicationWillTerminate"); 
} 

의 ViewController

-(void)applicationWillTerminate:(NSNotification *)notification { 
    NSLog(@"_view: applicationWillTerminate"); 
} 

많은 감사

EDIT_001 :

미안 해요, 난 claifiy해야합니다, 당신은 또한에 (아래 참조)를 추가해야 위의 작업을 수행하는 ViewController. 하나는 저장할 데이터에 대한 액세스 권한이 중

UIApplication *app = [UIApplication sharedApplication]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(applicationWillTerminate:) 
               name:UIApplicationWillTerminateNotification 
               object:app]; 

게리

답변

1

글쎄, 내 개인 취미 마를 채찍질하기 위해 설정은 전용 데이터 모델에 저장되어야하는 환경 설정의 한 형태라고 말할 수 있습니다. 예를 들어, NSUserDefaults는 싱글 톤 패턴으로 작성된 데이터 모델입니다. 당신은 물론 자신의 롤 수 있습니다. 관련없는 정보를 관리하는 경우 동일한 앱에서 여러 데이터 모델을 사용하는 데 문제가 없습니다.

키는 기본값/환경 설정/상태를 저장하는 것입니다. 그런 다음 응용 프로그램이 종료되면 기본값이 이미 자동 저장됩니다. iPhone에서 언제 앱이 중단되거나 중단되는지 결코 알 수 없습니다. 저장하는 것이 실제로 유일한 옵션입니다.

또한 제공된 코드 예제에서보기 컨트롤러는 응용 프로그램이 종료 될 때 어떻게 알 수 있습니까? IIRC, UIViewController는 applicationWillTerminate: 메서드가 없으며 특정 응용 프로그램을 자동으로받지 않으므로 메시지를 종료합니다. (편집 :Kenny는 의견 컨트롤러가 UIApplicationWillTerminateNotification을 등록하고 수신 할 수 있음을 지적합니다. -viewWillUnload에이 기능을 넣어야합니다. 그렇지 않으면 응용 프로그램을 종료 할 때 대리자가 활성보기 컨트롤러에 메시지를 보내도록하여 응용 프로그램 대리자에서보기 컨트롤러를 추적해야합니다.

+0

@TechZen :보기 컨트롤러는 'UIApplicationWillTerminateNotification' 알림을 청취 할 수 있습니다. – kennytm

+0

나는 확실히 "언제 어디서나"저축 할 것입니다, 나는 특별히 출구에서 저축 할 필요가 없습니다. – fuzzygoat

+0

@KennyTM - 좋은 지적으로, 나는 그것을 반영하기 위해 나의 대답을 편집했다. 그러나, 나는 그것이 좋은 디자인을 대표하는지 잘 모르겠다. 컨트롤러가 모델의 책임을 맡는 것 같아요. 물론, 당신이 그것을 필요로 할 때 희소 한 경우에 당신의 떨림 속에 그 화살을 가지고있는 것이 항상 좋은 것 같습니다. 감사. – TechZen

2

사용. 따라서 ViewController가 데이터를 볼 수는 있지만 AppDelegate는 데이터를 볼 수 없다면이를 사용하십시오.

관련 문제