use*_*ser 17 xcode objective-c ios
Master-Detail Xcode项目中的默认代码片段
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; // *** here ***
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
}
Run Code Online (Sandbox Code Playgroud)
AppDelegate.h
@property (strong, nonatomic) UIWindow *window;
Run Code Online (Sandbox Code Playgroud)
我知道@synthesize只设置了访问器方法,并且没有自动执行初始化.但是,如果从未明确初始化,那么如何window获得非零值rootViewController?这只是Xcode在幕后启动吗?
mat*_*att 25
从我的书:
如果在指定模板时选择"故事板"选项,则该过程的工作方式略有不同.该应用程序有一个主要的故事板,由Info.plist键"主故事板文件基本名称"(
UIMainStoryboardFile)指向.在UIApplicationMain实例化app delegate类之后,它会向app delegate请求其window属性的值; 如果该值为nil,则创建窗口并将其分配给app delegate的window属性.然后将故事板的初始视图控制器实例化并分配给窗口的rootViewController属性,结果是其视图作为其根视图放置在窗口中; 然后窗口被发送makeKeyAndVisible消息.所有这些都是在幕后完成的UIApplicationMain,没有任何可见的代码.这就是为什么在故事板模板中,application:didFinishLaunchingWithOptions:实现是空的.