programing

AppDelegate 인스턴스 변수 참조

testmans 2023. 9. 12. 19:54
반응형

AppDelegate 인스턴스 변수 참조

네비게이션 기반 응용프로그램 템플릿을 기반으로 하는 프로젝트가 있습니다.AppDelegate에 메소드가 있습니다.-applicationDidFinishLoading:그리고.-applicationWillTerminate:. 이러한 방법으로 애플리케이션 데이터를 로드하고 저장하며 인스턴스 변수에 저장합니다(실제로는 객체-그래프입니다).

응용 프로그램이 로드되면 MainWindow.xib이 로드되며, 이 응용 프로그램에는 탐색 컨트롤러가 있으며, 이 컨트롤러에는 RootView Controller가 있습니다.RootView ControllernibNameRootView(실제 컨트롤러 클래스)에 속성 포인트를 지정합니다.

나는 수업시간에 내가 만든 물건을 참고하고 싶습니다.-applicationDidFinishLoading:참조할 수 있도록 하는 방법입니다.

누가 어떻게 하는지 알려줄 수 있습니까?프로그래밍 방식으로 생성한 개체 간에 참조하는 방법은 알고 있지만 중간 단계가 NIB 파일 내에서 수행된 것을 고려하면 다시 스레드화할 방법을 찾을 수 없는 것 같습니다.

앱 어디에서나 액세스해야 하는 변수(일반적으로 모델 데이터 구조)의 경우 AppDelegate 클래스에 선언합니다.참조해야 할 경우:

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
//and then access the variable by appDelegate.variable 

질문을 이해했다면 AppDelegate 개체의 멤버 변수/속성을 참조하시겠습니까?가장 간단한 방법은 [UIA Application sharedApplication] delegate를 사용하여 개체에 대한 참조를 반환하는 것입니다.

window라는 속성이 있으면 다음을 수행할 수 있습니다.

UIWindow   *mainWindow = [[[UIApplication sharedApplication] delegate] window];
//do something with mainWindow

iOS 4.0 이상을 위한 휴대용 대안은 다음과 같습니다.

UIApplication *myApplication = [UIApplication sharedApplication];
UIWindow *mainWindow = [myApplication keyWindow];
UIViewController *rootViewController = [mainWindow rootViewController];

아니면, 한 줄로

UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];

창문의 크기를 조절하는 것을 잊지 마세요.rootViewController속성(IB에 표시됨) 또는 이것이 잭을 수행합니다.

매크로를 정의하고 어디서나 사용할 수 있습니다!

#define appDelegateShared ((AppDelegate *)[UIApplication sharedApplication].delegate)

내 코드에:-

UIViewController *rootViewController = appDelegateShared.window.rootViewController;

언급URL : https://stackoverflow.com/questions/231947/referencing-appdelegate-instance-variables

반응형