在使用xcode4创建的iphone上安装app时出现问题

Kir*_*ran 2 iphone-sdk-3.0 xcode4

每一个人

我已经在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'实例后终止被调用

cle*_*bit 7

你想要做的是替换:

self.window.rootViewController = self.mainViewController;
Run Code Online (Sandbox Code Playgroud)

[self.window addSubview:self.mainViewController.view];
Run Code Online (Sandbox Code Playgroud)

有几种方法可以检查设备上的系统版本.我在其他地方读过,Apple并没有特别容易,因为他们专注于最新和最好的版本,所以没有规范的方法,尽管许多开发人员已经设计了自己的解决方案.

我遇到的更简洁的一个是:

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


小智 6

我相信 - [版本4.0中添加了[UIWindow setRootViewController:],因此您无法在3.1.3中使用它.相反,您可以使用addSubView: