因为SDK 4中的模拟器3.2和4.0实际上并不适用于iPhone模拟(它总是出现在iPad上而根本没有响应),所以我最终安装了2个SDK,使用SDK 3.1.3 / Simulator 3.1模拟和SDK 4用于在OS 4上构建到iPhone 4.(更多细节here。)
我尝试使用SDK4-XCode 3.2.3中的旧模拟器3.1,例如通过将完整的“iPhoneSimulator.platform / Developer / SDKs / iPhoneSimulator3.1.3.sdk”目录复制到相应的XCode3.2.3目录中,并选择Simulator-3.1.3(确实出现在“Active Executable”列表中),但是它不能构建,超过30个错误,例如
未定义的符号:
“_OBJC_CLASS _ $ _ NSURLConnection的”, 引自: objc-class-ref-to-NSURLConnection in GRACEViewController.o
“_OBJC_CLASS _ $ _ NSString”,引用 从: GRACEViewController.o中的objc-class-ref-to-NSString
有没有办法在使用XCode 3.2.3时使用模拟器3.1(而不是模拟器3.2或4.0)(必须在OS 4上构建iPhone)?
答案 0 :(得分:3)
XCode 3.2.3确实做了iPhone模拟。您需要确保您的项目设置正确。我有以下设置,它适用于我:
有了这个,您应该可以选择在iPhone模拟器中运行项目。
答案 1 :(得分: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