3

因为 SDK 4 中的 Simulator 3.2 和 4.0 实际上不适用于 iPhone 模拟(iPad 总是出现并且根本没有响应),所以我最终安装了 2 个 SDK,使用 SDK 3.1.3/Simulator 3.1 进行模拟,并且SDK 4 用于构建到带有 OS 4 的 iPhone 上。(更多细节在这里。)

我尝试使用 SDK4-XCode 3.2.3 中的旧 Simulator 3.1,例如将完整的“iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk”目录复制到相应的 XCode3.2.3 目录中,然后选择 Simulator -3.1.3(确实出现在“Active Executable”列表中),但它无法构建,有超过 30 个错误,例如

未定义符号:
“_OBJC_CLASS_$_NSURLConnection”,引用自:GRACEViewController.o 中的objc-class-ref-to-NSURLConnection
“_OBJC_CLASS_$_NSString”,引用自:GRACEViewController.o 中的objc-class-ref-to-NSString

有没有办法在使用 XCode 3.2.3 时使用 Simulator 3.1(而不是 Simulator 3.2 或 4.0)?

4

2 回答 2

3

XCode 3.2.3 确实做 iPhone 模拟。您需要确保您的项目设置正确。我有以下设置,它适用于我:

  • 基础 SDK: iPhone 设备 4.0
  • 目标设备系列: iPhone
  • 部署目标: iPhone OS 3.0

有了它,您应该可以选择在 iPhone 模拟器中运行您的项目。

于 2010-06-25T16:52:29.690 回答
0

我发现通过完全保护任何 OS3.2 代码,我可以选择编译为 3.1.3 或 3.2,只需在编译时更改 Active SDK。3.1.3 将始终出现在 iPhone 模拟器中,3.2 将始终出现在 iPad 模拟器中。

这是一个完全受保护的代码示例:

    #ifdef UI_USER_INTERFACE_IDIOM
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad Only Code Goes here
            [deviceType setString:@"ipad"];
        } else {
    #endif
// iPhone Only Code Goes Here
            [deviceType setString:@"iphone"];
    #ifdef UI_USER_INTERFACE_IDIOM
        }
    #endif
于 2010-06-26T02:29:08.227 回答