我在xcode4中创建了一个示例项目(hello world),但我无法在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] Stack :( 843263261, 825818644, 843267069, 842763033, 842725440, 9545, 843742792, 843741800, 844074496, 844072508, 844071060, 860907492, 843011371, 843009055, 843738120, 843731504, 9401, 9324 ) 抛出'NSException'实例后调用终止
答案 0 :(得分:7)
您要做的是替换:
self.window.rootViewController = self.mainViewController;
与
[self.window addSubview:self.mainViewController.view];
有几种方法可以检查设备上的系统版本。我在其他地方读过,Apple并没有特别容易,因为他们专注于最新和最好的版本,所以没有规范的方法,尽管许多开发人员已经设计了自己的解决方案。
我遇到的更简洁的一个是:
if( [[[UIDevice currentDevice] systemVersion] compare:@"4.0" options:NSNumericSearch] == NSOrderedAscending )
[self.window addSubview:self.mainViewController.view];
else
self.window.rootViewController = self.mainViewController;
答案 1 :(得分:6)
我相信 - 在版本4.0中添加了[UIWindow setRootViewController:],因此您无法在3.1.3中使用它。相反,您可以使用addSubView: