1

我有 iphone 操作系统版本。2.0 我读到对于应用商店,所有应用程序都必须运行 3.0 os。所以我怎样才能让我的应用程序在两个固件中运行。有没有办法我可以检测 os ver.>3.0 然后运行不同的语句或者运行更低的语句超过 3.0 操作系统。目前我正在使用这个。

#if __IPHONE_3_0
cell.textLabel.text=cellValue;
[cell.textLabel setFont:[UIFont systemFontOfSize:15.0]];
[cell.textLabel setLineBreakMode:UILineBreakModeTailTruncation];
#else
cell.text=cellValue;    
[cell setFont:[UIFont systemFontOfSize:15.0]];
[cell setLineBreakMode:UILineBreakModeTailTruncation];  
#endif

它会在两个固件上运行吗

我想让我的应用程序在 >=3.0 操作系统上运行并且低于这个...请帮助我

如何检查我的应用程序是否有弃用的方法...我只能将此行视为弃用 cell.text=cellValue;

有什么要改变的吗?我已经安装了名为 iphone_sdk_3.0__leopard__9m2736__final.dmg 的新 sdk

4

4 回答 4

1

前段时间有一个类似的帖子。查看 Apple 的 MailComposer 示例,了解支持 3.0 和 2.x 固件的应用程序示例

于 2009-09-23T06:30:50.417 回答
1

您上面的代码不会在两组操作系统上运行。当您使用#if 语句时,您基本上排除了该特定构建的一个操作系统版本的代码。换句话说,您构建的每个版本,一个在您定义 __IPHONE_3_0 时,一个在您没有定义时,都会排除另一个版本的代码。

您正在做的是构建两个可执行文件,一个是为 __IPHONE_3_0 构建的,另一个是为 ! __IPHONE_3_0。

如果您想构建一个可执行文件,即一个在两者上运行的应用程序,那么您需要用运行时 ifs 替换 #if 语句,而不是编译时 #ifs,例如:

if (theOS >= kiPhone3)
   ....
else
   ....

您还可以链接仅 3.0 的库,但在运行时测试框架的可用性,然后在方法不可用时跳过调用。您需要使用不同的调用,一个用于检查方法是否可用,一个用于检查类是否可用:

Class newClass = (NSClassFromString(@"NewClassName"));
    if (newClass != nil)

最后一件事,有比你提到的更高版本的 SDK。

祝你好运!

于 2009-09-23T07:07:14.657 回答
0

如果您针对 2.0(或 2.1、或 2.2.1 等)SDK 构建它,它将在该 SDK 和任何更高版本上运行,除非 Apple 明确停止对该 SDK 的支持。我在 App Store 中看到很多应用程序都说它们可以在 iPhone OS 2.x 或更高版本上运行,并且它们在运行 3.1 的 iPhone 3G 上运行良好。

于 2009-09-23T06:52:33.940 回答
0

if-else 指令将对编译器隐藏一部分代码,因此它不会在两种软件上运行。

于 2010-03-18T23:16:58.553 回答