我有一个奇怪的问题。我收到一个错误报告,说应用程序因方向更改而崩溃。问题是我根本没有在应用程序代码中注册任何方向事件。我唯一与方向变化有关的是:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return IS_IPAD ? YES : interfaceOrientation == UIInterfaceOrientationPortrait;
}
...在所有视图控制器上,以确保它在 iPad 而不是 iPhone 上改变方向。错误发生在 iPhone 上。
IS_IPAD 来自于此:
#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD (false)
#endif
它似乎-[UIWindow _updateInterfaceOrientationFromDeviceOrientation:]
调用了一些不再存在的对象。如果我没有注册任何与方向相关的通知,那会是什么对象?