1

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

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

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

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

从我准备好的情况来看,这似乎是因为 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];
}

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

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

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

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

提前致谢!

4

2 回答 2

2

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 有一篇很棒的文章,我强烈推荐,在这里。当你在那里时,阅读他的整个博客,这很棒。:)

于 2011-07-05T18:37:27.667 回答
0

像您所做的那样设置不同的 SDK 对于获取有关您无法使用的内容的硬错误很有用,但正如您所看到的那样(取决于类)很难解决。

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

于 2011-07-05T18:54:38.053 回答