저는 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
하는 것에서 Application
Android의 내용과 가깝습니다 . 는 viewDidLoad
, viewDidDisappear
안드로이드의 라이프 사이클 것과 비교입니다. 모든 응용 프로그램에는 시작부터 전화 통화 중단, 알림 표시까지 수명주기가 있습니다. 이 때 특별한 일을하기 위해 코드가 필요한 경우system
이벤트가 발생할 메소드 코드를 작성해야합니다.
우리가 사용하는 안드로이드에서 onPause
, onDestroy
, onCreate
좀 같은 시스템 이벤트를 처리하는 방법을 콜백.
답변
이것이 조금 더 도움이되기를 바랍니다 …
이 언어를 처음 사용하는 프로그래머는 항상 같은 질문을합니다. 프로그램은 기본 방법에서 시작합니까? 예,이 경우에 옳습니다. iOS 앱도 주요 방법에서 시작합니다.
메인 클래스는 아래 함수를 호출합니다.
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain은 UIApplication
객체 를 생성하는 Cocoa Touch 실행 루프 및 앱 인프라를 시작 합니다. 우리의 응용 프로그램은 objective-c가 이것을 처리하기 위해 델리게이트를 사용하므로 내용이 필요합니다. 그렇기 때문에 AppDelegate (의 대리인 역할 UIApplication
)라고합니다. 해당 대리자의 선택적 옵션 중 일부를 구현하며 그에 따라 동작합니다.