如何让我的 iOS4.2 SDK 开发代码与 iOS3.1.3 一起工作?

Posted

技术标签:

【中文标题】如何让我的 iOS4.2 SDK 开发代码与 iOS3.1.3 一起工作?【英文标题】:How to get my iOS4.2 SDK developed code working with iOS3.1.3? 【发布时间】:2011-07-05 08:14:41 【问题描述】:

我是 iPhone 开发的新手。我开始使用 ios4.2 SDK 开发一个项目。它在 iOS4.2 设备和模拟器上都能正常工作。后来我意识到我的应用无法在 iOS3.1.3 的设备上运行。为了解决这个问题,我将应用配置文件中的“部署目标”更新为“3.1.3”。

我遇到的问题是我在某些课程中使用了 UITapGestureRecognizer。在使用 iOS 3.1.3 SDK 编译我的代码时,我收到以下错误:

错误:未声明“UITapGestureRecognizer”(在此函数中首次使用)

错误:'tap' 未声明(在此函数中首次使用)

根据我的准备,这似乎是因为 iOS .1.3 不支持 UITapGestureRecognizer,所以为了运行它,我在使用 UITapGestureRecognizer 的任何地方都进行了以下更改:

Class mailClass = (NSClassFromString(@"UITapGestureRecognizer"));
if(mailClass != nil)

 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(findOutTheTagmap:)];
 [imageView addGestureRecognizer:tap];
 [tap release];

我还更新了我的 Target 配置并将 UIKit 框架设置为“弱”。此外,我还进行了以下更改: 基础 SDK:3.1.3 编译器版本:GCC4.2(也尝试使用 GCC4.0) Mac OS X 部署目标:编译器默认值(也尝试使用 10.4 和 10.6) iOS 部署目标:3.1.3

然而,当我尝试编译我的代码时,我仍然看到同样的错误。令人惊讶的是,几天前有人在帮助我,并且成功了。

我已经尝试了几乎所有在论坛中找到的东西。

有人知道我该如何继续吗?

提前致谢!

【问题讨论】:

【参考方案1】:

Base SDK 是用于编译您的应用程序的 SDK 版本。您需要确保将其设置为具有您正在使用的所有功能的版本。 UIGestureRecognizer 需要 3.2 或更高版本,因此您应该将 Base SDK 设置为 3.2 或更高版本。实际上,3.2 只是 iPad;如果您的应用程序是 iPhone,您需要将 Base SDK 设置为 4.0 或更高版本。 3.1.3 对于Deployment Target 是正确的。检查您的代码以确保您正在使用的其他类在 3.1.3 中不可用(查看文档)。

Matt Gallagher 有一篇很棒的文章,我强烈推荐,here。当您在那里时,请阅读his whole blog,这很棒。 :)

【讨论】:

【参考方案2】:

按照您的做法设置不同的 SDK 对于获取有关您无法使用的内容的硬错误很有用,但正如您所见,很难(取决于类)解决问题。

相反,您应该始终针对最新的 SDK 进行构建。 (事实上​​,较新版本的 Xcode 具有您应该使用的“最新”设置。)将 iOS 部署目标 (IPHONEOS_DEPLOYMENT_TARGET) 设置为您的最低版本。

【讨论】:

以上是关于如何让我的 iOS4.2 SDK 开发代码与 iOS3.1.3 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 4.0.2 中使用 iOS SDK 4.2

允许 AirPlay 支持和 iOS 4.2、iOS 4.3

在 iOS 4.2 SDK 中返回 NSString 的函数总是返回 nil

iOS 4.2.1 开发 SDK 中缺少 libXcodeDebuggerSupport.dylib

如何在具有较高 iOS 的设备上调试具有较低 SDK 的 iOS 应用程序构建

打印控制器不出现