2011-04-13 94 views
2

HII每一个问题在iPhone上安装应用程序,它使用xcode4

我已创建了一个样本项目(你好世界)在xcode4创建的,但我不能在iPhone上安装它(IOS 3.1.3) 甚至虽然我已选择部署目标3.1.3(代码签名都妥当)

我在控制台收到跟随着,而安装 2011-04-13 13:01:37.868 prjTest [244:207] * - [的UIWindow setRootViewController:]:无法识别的选择器发送到实例0x119cd0 2011-04-13 13:01:37.885 prjTest [244:207] 终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:' ** - [UIWindow setRootViewController:]:无法识别的选择器发送到实例0x119cd0'2011-04-13 13:01:37.902 prjTest [244:207]堆栈:( 843263261, 825818644, 843267069, 842763033, 842725440, 9545, 843742792, 843741800, 844074496, 844072508, 844071060, 860907492, 843011371, 843009055, 843738120, 843731504, 9401,) 抛出的“NSException”

+0

我也有这个问题,我不在我的代码有setRootViewController任何地方。相反,我使用addSubView。但是,我一直使用SDK 4.3和部署目标3.1.3发现此错误。 – Hedin 2011-04-28 20:47:32

回答

6

一个实例,我相信终止后,被称为 - [一个UIWindow setRootViewController:在4.0版本中加入,所以你不能使用,在3.1.3。相反,你可以使用addSubView:

+0

亚工作正常,感谢您的回复,我有一个更多的怀疑,这个修改后的代码(在通过addSubView替换setRootViewController后)在ios4和高级版设备上运行? – Kiran 2011-04-13 08:50:08

7

你想要做的是替换:

self.window.rootViewController = self.mainViewController; 

[self.window addSubview:self.mainViewController.view]; 

有一对夫妇的方式来检查设备上的系统版本。我已经在其他地方看到,苹果公司并没有让这一切变得如此简单,因为他们专注于最新和最好的版本,所以没有规范的方法,尽管许多开发者已经设计了他们自己的解决方案。

一个比较简洁的我遇到的是:

if([[[UIDevice currentDevice] systemVersion] compare:@"4.0" options:NSNumericSearch] == NSOrderedAscending) 
    [self.window addSubview:self.mainViewController.view]; 
else 
    self.window.rootViewController = self.mainViewController;