[ios] AppDelegate 란 무엇이며 언제 사용해야하는지 어떻게 알 수 있습니까?

저는 iPhone 앱에서 일하기 시작했습니다. AppDelegate와 사용자 정의 클래스에 물건을 넣을시기를 어떻게 알 수 있습니까? AppDelegate와 같은 패턴을 사용하는 Python 또는 PHP와 같은 다른 프로그래밍 언어와의 규칙 또는 모든 유형의 유추가 있습니까?



답변

나는 Andrew가 “응용 프로그램의 핵심”이라는 용어를 사용함으로써 암시 된 설계 방식을 피합니다. 이것이 의미하는 바는 중앙 위치에 너무 많은 것들이 집중되는 것을 피해야한다고 생각합니다. 좋은 프로그램 디자인은 일반적으로 “관심 영역”으로 기능을 분리하는 것입니다.

델리게이트 개체는 연결된 개체가 특정 이벤트 나 상태에 도달 할 때 알림을받는 개체입니다. 이 경우 Application Delegate는 UIApplication 객체가 특정 상태에 도달하면 알림을받는 객체입니다. 많은면에서, 이것은 일대일 관찰자 패턴입니다.

이는 AppDelegate의 “관심 영역”이 특수한 UIApplication 상태를 처리하고 있음을 의미합니다. 이것들 중 가장 중요한 것은 :

  • applicationDidFinishLaunching :-시작시 구성 및 구성 처리에 적합
  • applicationWillTerminate :-마지막에 정리하기에 좋습니다

다른 기능은 AppDelegate에 포함되지 않으므로 AppDelegate에 두지 마십시오. 이러한 다른 기능은 다음과 같습니다.

  • 문서 데이터-문서 관리자 싱글 톤 (여러 문서 애플리케이션의 경우) 또는 문서 싱글 톤 (단일 문서 애플리케이션의 경우)이 있어야합니다.
  • 버튼 / 테이블 / 뷰 컨트롤러, 뷰 델리게이트 메소드 또는 기타 뷰 처리 (applicationDidFinishLaunching :에서 최상위 뷰 구성 제외)-이 작업은 각 뷰 컨트롤러 클래스에 있어야합니다.

많은 사람들이 게 으르거나 AppDelegate가 전체 프로그램을 제어한다고 생각하기 때문에 이러한 것들을 AppDelegate에 집중시킵니다. AppDelegate는 앱의 관심 영역을 흐리게하고 확장 할 수 없으므로 AppDelegate에서 중앙 집중화를 피해야합니다.


답변

응용 프로그램 위임은 응용 프로그램의 핵심입니다. 효과적으로 “프로그램 컨트롤러”입니다.

Application Delegate는 다른 뷰 생성을 시작하는 데 가장 일반적으로 사용되는 applicationDidFinishLaunching 메시지를 포함하여 응용 프로그램 수준 메시지를받는 클래스입니다.

정확히 비슷하지는 않지만 Cocoa 프로그램의 “main ()”루틴으로 생각할 수 있습니다.


답변

@Shivam, 감사합니다.

내가 이해 appDelegate하는 것에서 ApplicationAndroid의 내용과 가깝습니다 . 는 viewDidLoad, viewDidDisappear안드로이드의 라이프 사이클 것과 비교입니다. 모든 응용 프로그램에는 시작부터 전화 통화 중단, 알림 표시까지 수명주기가 있습니다. 이 때 특별한 일을하기 위해 코드가 필요한 경우system 이벤트가 발생할 메소드 코드를 작성해야합니다.

우리가 사용하는 안드로이드에서 onPause, onDestroy, onCreate좀 같은 시스템 이벤트를 처리하는 방법을 콜백.


답변

이것이 조금 더 도움이되기를 바랍니다 …

이 언어를 처음 사용하는 프로그래머는 항상 같은 질문을합니다. 프로그램은 기본 방법에서 시작합니까? 예,이 경우에 옳습니다. iOS 앱도 주요 방법에서 시작합니다.
메인 클래스는 아래 함수를 호출합니다.

 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

UIApplicationMain은 UIApplication객체 를 생성하는 Cocoa Touch 실행 루프 및 앱 인프라를 시작 합니다. 우리의 응용 프로그램은 objective-c가 이것을 처리하기 위해 델리게이트를 사용하므로 내용이 필요합니다. 그렇기 때문에 AppDelegate (의 대리인 역할 UIApplication)라고합니다. 해당 대리자의 선택적 옵션 중 일부를 구현하며 그에 따라 동작합니다.


답변