2011-08-04 4 views
1

나는 아이폰 개발에 익숙하며 다른 클래스에서 액세스 할 때 배열을 사용해야하므로 수석이 내게 당신이 애플 리케이션 델리게이트에서 선언하고 다른 클래스에 액세스해야한다고 말했어. 필요, 그래서 그 라인을 썼습니다우리 애플 리케이션에서 애플 리케이션 대리인을 사용하는 이유

MyAppAppDelegate * appObject = 
       (MyAppAppDelegate*)[[UIApplication sharedApplication]delegate]; 

나는 성공적으로 내 작업을 완료하지만 그것을 100 % 얻을 수 없었다. 누군가 우리가 이것을 왜 사용해야하는지, 그리고 정확히 이것을 사용해야 할 정확한 상황을 말해주는 사람입니까?

+1

. 효과적으로 배열을 [3 차 세계]로 만들었습니다 (http://boredzo.org/blog/archives/2011-03-18/application-delegate-singletons). 대안으로 [의존성 주입] (http://en.wikipedia.org/wiki/Dependency_injection)을 고려하십시오. –

답변

1

AppDelegate은 윈도우가 포함 된 응용 프로그램을 실행할 때 먼저로드됩니다. 따라서 프로젝트 전체에서 액세스하려는 변수와 개체는 AppDelegate에 선언되어 있습니다. 인스턴스를 만들어야하고 AppDelegate에있는 모든 개체에 액세스 할 수 있습니다.

1

ApplicationDelegate 싱글 톤 클래스로 유용 할 수 있지만 신중하게 그것을 사용하는 - 그리고 다양한 의견이에있다 -하지만 당신은 몇 글로벌 유형의 속성 또는 메서드가있을 경우 다양한 다른 클래스에서 호출 할 , 그리고 나는 약간을 강조하고, ApplicationDelegate는 이것들을 추가하기에 좋은 곳이 될 것입니다.

네, 그것은 나쁜 설계입니다. 그러나 신중하고 @Sedate Alien이 언급 할 때 의존성 주입을 살펴보면 문제를 해결할 수 있습니다.

ApplicationDelegate의 목적은, 그런데, 당신은 홈 화면으로 돌아 때 홈 화면에서 돌아올 때 등, 응용 프로그램을로드하는 등의 이벤트를 처리하기 위해 주로

이 나에게 나쁜 디자인 냄새
관련 문제