iOS self.window – 它是什么时候创build的?
当你启动你的应用程序使用单个视图模板,并添加NSLog(@"self.window = %@", self.window);
在AppDelegate.m的application: didFinishLaunchingWithOptions:
第一行application: didFinishLaunchingWithOptions:
方法中,您可以看到self.window
存在于您的应用程序中。
但是,当您使用空模板启动应用程序并尝试将self.window
logging到控制台时,结果将返回null
。 即使添加了Storyboard和一个视图控制器,并将其视图控制器设置为初始视图控制器,并尝试loggingself.window
,结果也是一样的 – 它的值设置为null
。
并注意,无论你采取什么方式,你可以find你声明@property (strong, nonatomic) UIWindow *window;
在AppDelegate.h默认情况下。 所以我想知道为什么在第一种情况下,你可以看到self.window
被初始化并设置了这个值,但是在后一种情况下没有。 另外,如果self.window
已经在第一种情况下被声明和初始化,而在第二种情况下则不是,我怎样才能find初始化代码呢?
看起来在这两种情况下, @property
声明是相同的 – 在这两种情况下,正如我所提到的,我尝试在AppDelegate.m
的application: didFinishLaunchingWithOptions:
的第一行loggingself.window
的值application: didFinishLaunchingWithOptions:
方法。
那么我错过了什么? 我不知道为什么这两个案件的行为不同,尽pipe我没有发现任何代码和故事板的差异。
我使用iOS 7和Xcode 5.谢谢。
好的,当您使用Storyboard或Nib创build项目时,项目设置会告诉项目storyboard / nib是“主界面”。
这会触发应用程序在启动时加载该接口。 这就是为什么在这些情况下创buildself.window
。
当你创build一个空的应用程序时,没有可以设置为主界面的界面。
然后你需要像这样自己创build窗口…
-(void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UIViewController *someController = [UIViewController... //create your initial controller [self.window addSubview:navigationController.view]; [self.window makeKeyAndVisible]; }
无论如何这样的东西。 有一阵子了。
另外,如果你创build一个空的应用程序,然后添加一个你想用作初始笔尖的nib文件,那么你可以在项目设置中select它。
在一般的目标。 在“部署信息”一节中,从项目中的笔尖select“主界面”。 这将在应用程序启动时加载该笔尖。
Xcode将UIWindow
声明为Appdelegate
IBOutlet
对象,xcode本身将其与默认ViewController.nib(在创build非空项目时由Xcode创build)的窗口挂钩或连接。如果您声明了Iboutlet,则不需要初始化任何对象并用笔尖连接到任何UIController。
现在在空项目中,如果你想创build窗口声明它作为出口,并连接它存在于笔尖的窗口,并使您的AppDelegate作为文件OWNER。
- 本地通知
- iPhone registerForRemoteNotificationTypes不会产生错误,但不会触发授予设备令牌的委托
- NSInternalInconsistencyException',原因:'无法在捆绑中加载NIB:'NSBundle
- 在iOS(Facebook和Instagram)中处理不同的URLscheme
- 应用程序的生命周期 – 当应用程序被终止,并推送套件有效负载
- 从AppDelegate显示两个ViewController
- 当App Delegate的方法将终止执行?
- 应用程序崩溃与exc_bad_access代码exception
- 表格添加SWRevealViewController后不加载数据