读书人

详解iPhone下怎么获取对象二

发布时间: 2013-07-08 14:13:00 作者: rapoo

详解iPhone下如何获取对象二

  • #import?"NavSmallPhoneViewController.h" ?
  • @implementation?NavSmallPhoneAppDelegate??
  • @synthesize?window=_window; ?
  • @synthesize?viewController=_viewController; ?
  • @synthesize?info; ?
  • -?(BOOL)application:(UIApplication?*)application?didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions{??????
  • ??????????//?Override?point?for?customization?after?application?launch.??????????
  • ??????????selfself.window.rootViewController?=?self.viewController;??????
  • ??????????[self.window?makeKeyAndVisible];?????????
  • ??????????//Todo?这部分代码是未测试和说明一个问题的:当前UIApplicationDelegate实现类中的window属性来源哪???????
  • ??????????UIWindow?*w?=?[UIApplication?sharedApplication].keyWindow;??????
  • ??????????NSLog(@"%@\n%@"?,w?,self.window);??????
  • ??????????if?(w?==?self.window)??????????
  • ??????????NSLog(@"AppDelegate?'window?is?UIApplication?current?keyWindow!");?????????
  • ??????????return?YES;} ?
  • ????????????
  • ??????????-?(void)dealloc{??????
  • ??????????[_window?release];??????
  • ??????????[_viewController?release];??????
  • ??????????[super?dealloc]; ?
  • ??} ?
  • @end?

    看头文件,你发现实现类,有了两个属性,window和viewController;就是保存当前实现类所关联的window和视图控制器

    通过运行,输出“AppDelegate 'window is UIApplication current keyWindow!”,说明实现类的window属性来源UIApplication实例当前的keyWindow属性。

    也就是说,如果UIApplication实例只有一份UIWindow实例,那肯定和其UIApplicationDelegate实现类的window属性指向同一UIWindow实例。

    之所以在UIApplicationDelegate实现类定义这么两个属性,就是为了更方便的使用UIWindow和UIViewController,作用就是建立对象树状关系,便于彼此调用和实现。

    在这里,应该清楚了UIApplication和UIViewController之间是通过UIWinodw来关联的,尽管在UIApplicationDelegate实现类中定义一个viewController属性。修改下上面的关系图:

    常规iPhone程序对象结构如下:

  • 读书人网 >Iphone

    热点推荐