如何在Xcode 3.2.3(iPhone SDK 4 beta)中启动iPhone 3.1.3项目

时间:2010-04-14 10:29:09

标签: iphone xcode

自从我下载iPhone SDK 4.0的测试版以来,我遇到了很大的问题。 好吧,几周前我刚刚开始关注iPhone开发,但我无法弄清楚Xcode应该如何工作:

每当我开始一个新项目时,我都会选择像“基于视图的应用程序”这样的模板。现在,目标总是(至少我没有在任何地方找到偏好!)是最新的SDK:4.0。 但是:然后:将目标切换回3.1.3,模板文件似乎包含错误!以这种方式启动空应用程序会产生异常:

  

因未捕获而终止应用   异常'NSUnknownKeyException',   理由:[...]这门课不是关键   符合编码的密钥   RootViewController的

看来,原因是生成的MainWindow.xib在viewController旁边有一个rootViewController的“引用插座”...

现在,我的(愚蠢)问题:如何开发针对最新SDK的应用程序 NOT ,但标准3.1.3 SDK?换句话说:我希望Xcode不仅要在New Project窗口中要求项目类型,还要为我的所需目标平台生成正确的模板!!

我是否正确使用此步骤生成的模板对4.0以外的任何其他目标无效? 那怎么可能?

......我想要我的Eclipse回来! 叹息

有人可以帮帮我吗?

5 个答案:

答案 0 :(得分:2)

以防万一有人在寻找这个。

只需检查窗口是否首先响应该功能。如果是(4.0及更高版本),则使用它,否则首先使用pre 4.0版本。

if([self.window respondsToSelector:@selector(rootViewController)]) {
    self.window.rootViewController = self.viewController;        
} else {
    [self.window addSubview :self.viewController.view];        
}

答案 1 :(得分:1)

简单:不要使用beta SDK,它在此阶段用于为未发布的操作系统版本开发应用程序,以及您已同意NDA。

请下载已发布的SDK版本,并感到高兴。

答案 2 :(得分:1)

我发现的解决方案是在didFinishLaunchingWithOptions中手动将我的View添加到窗口,而不是依赖于Interface Builder连接。似乎连接rootViewController w / iOS4 IB导致应用程序在部署到3.x时崩溃(对我来说是3.1.3)。

因此,首先打开IB,右键单击Window,并确保“rootViewController”未连接。然后在你的AppDelegate中,你应该有像

这样的东西
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

这适用于主视图是navigationController的情况。如果不是,请相应地更改addSubview。

答案 3 :(得分:0)

我正在寻找的问题的答案似乎是:

这是不可能的。

要开发某个iOS版本,请安装相应的Xcode。 Apple显然不知道想要同时为多个目标平台开发的人。 : - (

答案 4 :(得分:0)

我认为弗朗索瓦有一个很好的答案。

我也是Xcode的新手,正在使用Xcode 3.2.6并在iOS 3.1.3设备上进行测试。这些教程适用于iOS 4.3,所有这些都是从选择“基于视图的应用程序”开始的。当我测试教程时,他们在模拟器中工作但不在设备上工作。我认为这适用于SDK 4,但我自己没有尝试过。

我第一次收到错误:“...指定的最低操作系统版本为4.3,这个版本太高而无法在iPhone上安装。”

许多其他人已经解决了这个问题,但是通过转到项目>编辑项目设置,选择构建选项卡,向下滚动到部署部分并将“开发目标iOS”字段更改为与iOS相同来解决此问题。装置。

然后教程应用程序将在手机上启动,但只显示一个空白屏幕,我收到错误:“SIGABRT”和“NSException” - 即使我只是尝试启动一个简单的HelloWorld应用程序。这是由iOS 3不支持self.window.rootViewController = self.viewController引起的。

要修复它,请转到___ Delegate.m文件,并用Francois优雅的解决方案替换“self.window.rootViewController = self.viewController”行:

 if([self.window respondsToSelector:@selector(rootViewController)]) {
    self.window.rootViewController = self.viewController;        
} else {
    [self.window addSubview :self.viewController.view];        
}

现在SDK 3.2中基于视图的应用程序模板适用于iOS 3和4。

相关问题