2012-03-27 7 views
2

UIApplicationDelegate을 준수하고 ANY 클래스에서 호출되는 시작/닫기에서 호출되는 모든 함수를 성공적으로 사용할 수 있습니까? 예를 들어, 앱 종료와 관련하여 많은 데이터를 저장하는 클래스가 있지만 App Delegate에서 해당 데이터에 대한 참조를 만들고 싶지 않은 클래스가 있다면 그냥 가지고있을 수 있습니까? UIApplicationDelegate 프로토콜을 준수하면 (void)applicationWillResignActive:(UIApplication *)application에 저장합니까?UIApplicationDelegate 다른 클래스의 함수

더 간결하게하기 : 여러 클래스를 갖는 데 어떤 위험이 있습니까? UIApplicationDelegate?

답변

4

한 번에 모든 개체에 대해 하나의 대리자 만 지정할 수 있습니다. 정말로 여기에서 원하는 것은 알림 등록입니다.

원하는 항목에 대한 알림이 없으면 특정 응용 프로그램 위임 사항이 실행될 때 작업 할 다양한 클래스의 모든 수신기에 사용자 지정 알림을 게시하도록 응용 프로그램 대리인을 설정하십시오.

간결한 질문에 답하면 여러 클래스가 UIApplicationDelegate에 부합하는 데 "위험"이 없어야하지만, 한 번에 하나의 대의원 만 UIApplication에 응답 할 수 있습니다.

+0

그러나에 Notifications의 문서를 확인, 그들은 지금 UIApplicationDelegate''에 부합하는 여러 클래스에 대해 경고하지 않습니다. – CodaFi

+2

@CodaFi, 당신은 다른 클래스가 UIApplicationDelegate를 따르도록 할 수 있지만, UIApplication 객체에 여러 대의 델리게이트를 어떻게 할당 할 것입니까? – sosborn

+0

'[UIApplication sharedApplication] .delegate'가 유망 해 보입니다. – CodaFi

3

위임자를 클래스로 설정할 필요가 없으며 두 명의 대표를 가질 수도 없습니다.
할 수있는 작업은 알림을 등록하는 것입니다.

UIApplicationDidBecomeActiveNotification 
UIApplicationDidChangeStatusBarFrameNotification 
UIApplicationDidChangeStatusBarOrientationNotification 
UIApplicationDidEnterBackgroundNotification 
UIApplicationDidFinishLaunchingNotification 

등 등 문서에보고 UIApplication 클래스 참조

+0

나는 분명히하고 있다고 생각하지 않습니다. 가능한 경우 해결 방법이 아닌지 알고 싶습니다. 더 자세한 내용은 Michael Dautermann과의 토론을 참조하십시오. – CodaFi

+0

@CodaFi이 문제가 해결되지 않았습니다. 한 번에 하나의 대리자 만 이러한 메서드 호출을 얻을 수 있습니다. 한 가지는 클래스에 대한 위임자를 뷰에로드 할 수 있도록 설정했거나 클래스 개체를 만들고 AppDelegate 클래스가 아닌 클래스에서 모든 메서드 호출을 가져 오는 것입니다. 그리고 제 의견으로는 어떤 문제도 있어서는 안됩니다. 하지만 위임을 설정하는 대신 알림을 제안합니다. 이제 결정이 당신에게 달려 있습니다. –

관련 문제