2012-11-24 3 views
0

iOS 애플리케이션에서 AppDelegate에 일부 애플리케이션 로직을 구현했습니다. 등iOS, InterfaceBuilder에서 AppDelegate 사용, 두 인스턴스 생성

여러 뷰 컨트롤러는 AppDelegate를 호출해야합니다, 그래서 난 인터페이스 빌더에서 AppDelegate을 배치하고 IBOutlet AppDelegate*ViewControllers를주고 그것에 대한 링크를 받았다.

앱에서는 AppDelegate의 인스턴스가 두 개 생성 된 것으로 나타났습니다. 하나는 호출되고 하나는 모든 알림을 가져오고 하나는 ViewControllers에 연결됩니다.

app_del = (AppDelegate*)[[UIApplication sharedApplication] delegate] :

그래서 ViewControllers에서 사용하는 내 응용 프로그램을 바 꾸었습니다.

그럼 이걸 appDelegate이라고합니다. 그러나 이것은 또한 알림을받는 인스턴스와는 다른 인스턴스입니다. 아무도 이유를 설명 할 수 있습니까?

누가 잘못 될지 말해 줄 수 있습니까? 인터넷 검색에서 내가 의심하는 이유는 iOS가 AppDelegate 인스턴스를 만들고 인터페이스 작성기가 해당 인스턴스를 알지 못하고 다른 인터페이스를 작성하기 때문입니다. 그 맞습니까?

Interface Builder에서 인스턴스를 가장 잘 작성하고 계획하는 방법에 대한 조언과 시작시 응용 프로그램에서 생성되는 순서 및 모든 알림에서 작성된 모든 정보를 신뢰할 수 있습니까?

힌트를 보내 주셔서 감사합니다. Torsten.

답변

2

귀하의 의문의는 맞습니다. iOS는 앱을 시작할 때 애플리케이션 위임의 인스턴스를 만듭니다.이 인스턴스는 모든 위임 이벤트 등을 수신하도록 등록 된 인스턴스입니다. here을 참조하십시오.

xib 또는 스토리 보드에 추가하는 항목은 모두 새 인스턴스이며 작동하지 않습니다. 당신이 편리하게 사용할 수 글로벌 데이터 또는 방법으로 응용 프로그램 대리자를 남용하지 말아야 말한다 생각의 학교가

[[UIApplication sharedApplication] delegate]; 

있습니다 :

사용, 에이 방법을 응용 프로그램 대리자를 포인터를 얻으려면 상점,하지만이 답변의 범위를 벗어납니다.

관련 문제