EDIT: where I write "class" below, I mean "the actual class name of the class", not literally "class"!
For a UIViewController in a Universal app, we use:
[[class alloc] initWithNibName:nil bundle:nil];
or
[[class alloc] init]; // same thing
with files:
- class~ipad.xib
- class~iphone.xib
Apple correctly loads the device-specific NIB, as per Apple docs.
But if the UIViewController has a ".mm" extension, it fails every time. Seems to only happen with Obj-C++ viewcontrollers (changing the file extension "fixes" it).