¿Por qué se llama a viewDidLoad dos veces cuando se establece la propiedad rootViewController de UIWindow?

Ya había un par de preguntas similares, pero no era exactamente lo mismo que en mi caso. Simplemente comience un nuevo proyecto basado en vista, agregueviewDidLoad yawakeFromNib con declaraciones NSLog y realice los siguientes cambios enMainWindow.xib:

Quite la conexión del controlador de vista en el delegado de la aplicación.ConnectUIWindow’s rootViewController delegar a la instancia de App View Controller.

El seguimiento de la pila desde la primera llamada:

#0     0x000025c0 in -[foozaViewController viewDidLoad] at /Users/rafael/Downloads/fooza/fooza/foozaViewController.m:38
#1     0x000cd089 in -[UIViewController view] ()
#2     0x00040d42 in -[UIWindow addRootViewControllerViewIfPossible] ()
#3     0x0079d5e5 in -[NSObject(NSKeyValueCoding) setValue:forKey:] ()
#4     0x00050ff6 in -[UIView(CALayerDelegate) setValue:forKey:] ()
#5     0x0021930c in -[UIRuntimeOutletConnection connect] ()
#6     0x00d418cf in -[NSArray makeObjectsPerformSelector:] ()
#7     0x00217d23 in -[UINib instantiateWithOwner:options:] ()
#8     0x00219ab7 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] ()
#9     0x0001f17a in -[UIApplication _loadMainNibFile] ()
#10     0x0001fcf4 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] ()
#11     0x0002a617 in -[UIApplication handleEvent:withNewEvent:] ()
#12     0x00022abf in -[UIApplication sendEvent:] ()
#13     0x00027f2e in _UIApplicationHandleEvent ()
#14     0x01004992 in PurpleEventCallback ()
#15     0x00dac944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#16     0x00d0ccf7 in __CFRunLoopDoSource1 ()
#17     0x00d09f83 in __CFRunLoopRun ()
#18     0x00d09840 in CFRunLoopRunSpecific ()
#19     0x00d09761 in CFRunLoopRunInMode ()
#20     0x0001f7d2 in -[UIApplication _run] ()
#21     0x0002bc93 in UIApplicationMain ()
#22     0x000020d9 in main ()

Y aquí está el rastro de la segunda llamada:

#0     0x000025c0 in -[foozaViewController viewDidLoad] at /Users/rafael/Downloads/fooza/fooza/foozaViewController.m:38
#1     0x00002555 in -[foozaViewController awakeFromNib] ()
#2     0x00217f26 in -[UINib instantiateWithOwner:options:] ()
#3     0x00219ab7 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] ()
#4     0x0001f17a in -[UIApplication _loadMainNibFile] ()
#5     0x0001fcf4 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] ()
#6     0x0002a617 in -[UIApplication handleEvent:withNewEvent:] ()
#7     0x00022abf in -[UIApplication sendEvent:] ()
#8     0x00027f2e in _UIApplicationHandleEvent ()
#9     0x01004992 in PurpleEventCallback ()
#10     0x00dac944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#11     0x00d0ccf7 in __CFRunLoopDoSource1 ()
#12     0x00d09f83 in __CFRunLoopRun ()
#13     0x00d09840 in CFRunLoopRunSpecific ()
#14     0x00d09761 in CFRunLoopRunInMode ()
#15     0x0001f7d2 in -[UIApplication _run] ()
#16     0x0002bc93 in UIApplicationMain ()
#17     0x000020d9 in main ()

¿Es este comportamiento deseado o un error? ¿Deberíamos seguir utilizando la forma más tradicional de conectar una salida al controlador de vista raíz en el delegado de la aplicación para mantener un @ sanviewDidLoad/viewDidUnload ratio o deberíamos ignorar las reglas de Apple y no llamar a super enawakeFromNib y usa el nuevorootViewController propiedad deUIWindow?

Respuestas a la pregunta(1)

Su respuesta a la pregunta