引用AppDelegate实例variables

我有一个基于导航的应用程序模板的项目。 在AppDelegate中有方法-applicationDidFinishLoading:-applicationWillTerminate: 在这些方法中,我正在加载和保存应用程序数据,并将其存储在实例variables(实际上是一个对象图)中。

当应用程序加载时,它加载MainWindow.xib,它有一个NavigationConroller,它又有一个RootViewController。 RootViewController nibName属性指向RootView(我的实际控制器类)。

在我的课上,我想引用我在-applicationDidFinishLoading:方法中创build的对象,以便我可以获得对它的引用。

谁能告诉我该怎么做? 我知道如何在编程创build的对象之间引用,但由于中间步骤是在NIB文件中完成的,因此我似乎无法find回头的路线。

对于需要在应用程序的任何位置访问它的variables(通常是模型数据结构),请在AppDelegate类中声明它们。 当你需要引用它时:

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

如果我理解你的问题,你想引用你的AppDelegate对象的成员variables/属性? 最简单的方法是使用[[UIApplication sharedApplication]委托]返回对象的引用。

如果你有一个叫做window的属性,你可以这样做:

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

下面是iOS4.0及更高版本定义好的可移植替代scheme:

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

或者,在一行中,

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

不要忘记设置窗口的rootViewController属性(比如说在IB中),否则这个rootViewController会做。

我定义一个macros,并像这样使用它:

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

在我的代码中: –

 appDelegateShared.myVariable=anotherVariable;