繁体   English   中英

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

[英]How to start an iPhone 3.1.3 project in Xcode 3.2.3 (iPhone SDK 4 beta)

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

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

因未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:[...]此类不是键值rootViewController的键值编码兼容

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

生病

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

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

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

有人能帮帮我吗?

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

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

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

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

所以下载SDK的发布版本,并开心。

我发现的解决方案是在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。

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

这不可能。

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

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

我也是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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM