我真的在撞上一个奇怪的问题。我的应用程序的一些用户报告说,该应用程序无法启动,但在显示启动屏幕2秒后崩溃。这只发生在较旧的iPod 2G/iPhone 3G上。发生这种情况后,我试图追踪它。iPhone 3G/iPod 2G上的奇怪崩溃
调试代码不会发生崩溃,但仅在发布版本中发生。直到发生崩溃时,我的代码才被执行。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
NSString *ipadXib = [NSString stringWithFormat:@"%@-iPad", [[self class] description]];
return [super initWithNibName:ipadXib bundle:nibBundleOrNil];
} else {
return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
}
}
:有些UIViewControllers在我的AppDelegate初始化,无论序列我选择这里,他们第一次通过initWithNibName,这是所有控制器相同,处理正确的厦门国际银行的加载一个通用的应用程序运行失败之后
该代码运行良好,但从这里返回时,最终在UIKit(不是我的代码)中出现了SIGBUS错误。我怀疑上面的代码,因为当我只是不重写initWithNibName(这对iPhone版本来说没问题)时,完整的代码将贯穿始终。如果我在这里调用[super ...],它也可以工作,但是我怀疑编译器只是简单地将它优化掉,具有相同的效果,而不会覆盖它。由于InterfaceIdiom不是iPad,所以只使用相同的超级函数而不用改变参数,所以它应该是不容易的。 它适用于其他所有设备。没有分析仪错误,无泄漏。它真的发生得这么早,以至于几乎没有任何我的代码,除了上述情况在崩溃发生时被调用。它发生在我控制器序列中的第一个控制器上。
任何想法?我完全卡在...