Feels a bit silly to ask, but - why the complicated approach? Can't we just do:
```objc
if ([self.topViewController respondsToSelector:@selector(preferredStatusBarStyle)]) {
    style = [self.topViewController preferredStatusBarStyle];
}
```
We might have to wrap the code above with a preprocessor directive so it only compiles in iOS 7, but... still feels more straightforward? I dunno.