viewDidLoad getting called twice on rootViewController at launch

cocoa-touch, iphone, uiviewcontroller, viewdidload

Solution

Weird. I haven't seen this particular case, but in general, you ought to assume that viewDidLoad can be called multiple times. It'll get called whenever a nib file that references that controller gets loaded.

For a simple app with only one nib, that shouldn't happen. But in a more-complex app that can load and unload view controllers, this happens all the time.

Problem

Anyone know why this root `View Controller's` `viewDidLoad` is being called twice at launch? It's driving me nuts! here's the stack trace from first time through `viewDidLoad`: ``` #0 0x0000276a in -[RootViewController viewDidLoad] at RootViewController.m:71 #1 0x3097548f in -[UIViewController view] #2 0x00002734 in -[RootViewController initWithCoder:] at RootViewController.m:39 #3 0x30ab5ce4 in -[UIClassSwapper initWithCoder:] #4 0x30514636 in _decodeObjectBinary #5 0x30514035 in _decodeObject #6 0x30ab5a1d in -[UIRuntimeConnection initWithCoder:] #7 0x30514636 in _decodeObjectBinary #8 0x30515f27 in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:] #9 0x305163b0 in -[NSArray(NSArray) initWithCoder:] #10 0x30514636 in _decodeObjectBinary #11 0x30514035 in _decodeObject #12 0x30ab4dde in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] #13 0x30ab6eb3 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] #14 0x308f85f1 in -[UIApplication _loadMainNibFile] #15 0x30901a15 in -[UIApplication _runWithURL:sourceBundleID:] #16 0x308fef33 in -[UIApplication handleEvent:withNewEvent:] #17 0x308fad82 in -[UIApplication sendEvent:] #18 0x309013e1 in _UIApplicationHandleEvent #19 0x32046375 in PurpleEventCallback #20 0x30245560 in CFRunLoopRunSpecific #21 0x30244628 in CFRunLoopRunInMode #22 0x308f930d in -[UIApplication _run] #23 0x309021ee in UIApplicationMain #24 0x000022e4 in main at main.m:14 ``` and the second time: ``` #0 0x0000276a in -[RootViewController viewDidLoad] at RootViewController.m:71 #1 0x30ab50cd in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] #2 0x30ab6eb3 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] #3 0x308f85f1 in -[UIApplication _loadMainNibFile] #4 0x30901a15 in -[UIApplication _runWithURL:sourceBundleID:] #5 0x308fef33 in -[UIApplication handleEvent:withNewEvent:] #6 0x308fad82 in -[UIApplication sendEvent:] #7 0x309013e1 in _UIApplicationHandleEvent #8 0x32046375 in PurpleEventCallback #9 0x30245560 in CFRunLoopRunSpecific #10 0x30244628 in CFRunLoopRunInMode #11 0x308f930d in -[UIApplication _run] #12 0x309021ee in UIApplicationMain #13 0x000022e4 in main at main.m:14 ```

Original source