2012-03-30 3 views
0

다른 개발자가 AppDelegate와 ViewController 사이에 선을 그리는 방법에 관심이 있습니다. 나는 다른 사람들이 그것을 어떻게 다루 었는지, 그리고 나의 특정한 경우뿐만 아니라 그것을 알고 싶다. 보기는 평가 될 것이다.AppDelegate와 ViewController 사이의 라인

AppController에서 AppDelegate의 알림이 필요한 지점에 도달했습니다. 필자의 경우, 현재 ViewController는 앱이 비활성화되거나 종료되는 시점을 알아야합니다. 사전

답변

1

보기 컨트롤러는 아마도 지금보기 세트 (또는 다른 집합을 관리 : 특정 경우에, 당신은 앱 위임을 사용하지 않고 (NSNotificationCenter를 통해) 앱에서 어디 그 통지에 액세스 할 수 있습니다 뷰 컨트롤러도 있음). 뷰를 관리하는 영역을 넘어서는 모든 것이 뷰 컨트롤러에 실제로 속한 것은 아닙니다. 우리 중 많은 사람들이보기 컨트롤러에 UITableViewDelegatesUITableViewDataSources을 추가하여이 규칙을 굽습니다. 또는 다른 유사한 코드.

AppDelegate는 전체 응용 프로그램의 대리인입니다. 응용 프로그램 레벨 이벤트를 처리해야합니다. 앱이 백그라운드로 전환되면 애플리케이션 전체에서 처리되는 데이터의 상태를 저장해야 할 수 있습니다.

UIViewController에 AppDelegate가 받고 처리하는 이벤트 알림이 필요하지는 않습니다. 응용 프로그램 위임은 응용 프로그램 전반에 걸친 요구 사항을 충족해야하지만,보기 컨트롤러에는 특정 요구가있을 수 있습니다. 보기 컨트롤러를 가져 와서 원하는 이벤트를 등록하십시오 (앱 델리게이트가 똑같은 이벤트를 처리하는지는 중요하지 않습니다). 그런 다음 뷰를 올바르게 관리하기 위해해야 ​​할 일을하십시오.

2

나는 가능한 모든 것을 앱 위임을 사용하지에서

감사합니다. 일종의 글로벌 변수 버팀목으로 사용하기가 너무 쉽기 때문에 디자인이 좋지 않습니다.

NSNotificationCenter* defaultCenter = [NSNotificationCenter defaultCenter]; 
[defaultCenter addObserver:self 
        selector:@selector(applicationWillResignActive:) 
         name:UIApplicationWillResignActiveNotification 
        object:nil]; 
관련 문제