Application Delegate를 가장 잘 설명하는 것은 무엇입니까?전체 컨셉에 어떻게 들어맞나요?

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

문제

App Delegate가 무엇을 하는지 알 것 같습니다.다음과 같은 좋은 방법이 있습니다. -applicationDidFinishLaunching 앱 실행이 완료되면 호출됩니다.그런데 그게 실제로 뭐죠?어떤 개체가 인스턴스화되어 있습니까? UIApplicationMain 기능?

그리고 내 앱의 모든 클래스가 해당 App Delegate 개체에 액세스할 수 있도록 하려면 어떻게 작동하나요?이러한 관계를 시각화하는 좋은 그래프가 인터넷에 있습니까?

도움이 되었습니까?

해결책

Cocoa에서 대리자는 동작에 대한 질문을 다른 객체에 맡기고 해당 상태의 변화에 ​​대해 알려주는 객체입니다.예를 들어 UITableViewDelegate는 선택이 이루어지거나 행이 재정렬될 때 UITableView가 어떻게 작동해야 하는지에 대한 질문에 대답하는 역할을 담당합니다.UITableView가 특정 행의 높이를 알고 싶을 때 묻는 개체입니다.모델-뷰-컨트롤러 패러다임에서 대리자는 컨트롤러이며 많은 대리자의 이름은 "컨트롤러"로 끝납니다.

명백하게 언급할 위험이 있지만, UIApplicationDelegate는 UIApplication에 대한 위임자입니다.NSApplication 대리자는 NSApplication의 동작을 더 직접적으로 제어할 수 있기 때문에(예를 들어 애플리케이션이 종료되는 것을 방지함) Cocoa Touch(iPhone)보다 Cocoa(Mac)에서 관계가 좀 더 분명합니다.iPhone은 UIApplication에 대한 많은 제어를 허용하지 않으므로 대부분 UIApplicationDelegate는 적극적인 의사 결정 프로세스를 갖기보다는 변경 사항에 대한 정보를 받습니다.

UIApplicationDelegate는 앱의 모든 곳에서 엄격하게 사용할 수 있는 것은 아닙니다.싱글톤 UIApplication은 ([UIApplication sharedApplication])이며 이를 통해 해당 대리자를 찾을 수 있습니다.하지만 이것이 앱의 모든 개체가 앱 대리자와 직접 통신하는 것이 적절하다는 의미는 아닙니다.일반적으로 개발자가 임의의 개체가 앱 위임자와 통신하는 것을 권장하지 않습니다.이러한 방식으로 해결되는 대부분의 문제는 Singleton, NSNotification 또는 기타 대리자 개체를 통해 더 잘 해결됩니다.

생성과 관련하여 Mac에서는 앱 대리자에 대해 마법 같은 것이 없습니다.대부분의 경우 NIB에 의해 인스턴스화되고 연결되는 객체일 뿐입니다.그러나 iPhone에서는 UIApplicationMain()에 의해 인스턴스화되면 앱 위임이 약간 마법처럼 느껴질 수 있습니다.네 번째 매개변수는 앱 대리자의 클래스를 나타내는 NSString이며, UIApplicationMain()은 하나를 생성하고 이를 sharedApplication의 대리자로 설정합니다.이를 통해 NIB 없이 대리자를 설정할 수 있습니다(Mac에서는 매우 어렵습니다).UIApplicationMain()의 네 번째 매개변수가 nil인 경우(Apple 템플릿과 마찬가지로) 기본 창과 마찬가지로 기본 NIB에 의해 위임이 생성되고 연결됩니다.

다른 팁

대상은 이런 방식으로 인스턴스화됩니다.

메인 기능은 info.plist에있는 메인 펜촉을 찾습니다. NIB에는 앱 대의원이 있으며 일부 클래스로 설정되어 UIAPplicationDelegates와 필요한 방법을 구현해야합니다. 그런 다음 앱 대의원은 일부 ViewController를로드합니다.

낮은 메모리 등과 같은 전체 응용 프로그램에 영향을 미치는 이벤트에 대한 응용 프로그램 광고 콜백 객체 역할을합니다.

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