2010-05-21 30 views
0

我当时正在做一个iPhone/iPad通用二进制文件的项目。我创建了iPhone应用程序端 ,我也正在完成iPad。我注意到一件事,我在iPad上使用UIPopoverController类,这意味着当我在模拟器中为3.2版本构建时,它会运行iPad一个并且工作正常,但如果我想要查看iPhone版应用程序,则意味着3.1。 3,它给了我一个在iPad类中缺少框架的错误。固件版本的iPhone/iPad通用版本问题

我不知道如何解决这个问题,因为我不能再看到应用程序的iPhone版本并进行更改。我只能删除所有的iPad类,并在重新进口后。

谢谢你们!

回答

2

随着3.2 SDK的模拟器将只能作为一个iPad运行。

如果你想测试你的iPhone端,你将不得不在包装预处理条件3.2特定的代码,使其与3.1.3编译。

如果你有一个装置,你应该能够编写iPad和使用3.2 SDK通过设置“部署目标”中目标的构建设置设置的iPhone版本。 将其设置为您愿意支持的最低版本的iPhone OS,例如3.1.3并使用3.2进行编译。您还需要对任何新的3.2框架(例如Core Text)进行“薄弱环节”。

最后,如果你没有准备好,你应该使用运行时检查,以确保您的iPhone版本不会尝试使用任何3.2的功能,如popovers。

这样一来,你就不必删除您的酥料饼的参考,你应该能够编译。但是,正如我所说的,只有当您有物理设备进行测试时,这才会有用。

如果你想使用模拟器,你必须遵循预处理器条件方法。

+0

伙计,thaks为答案。特别的是,我已经将目标部署为3.1.3,我正在编译3.2版本,而iPhone并没有加载PopOver类。我不能使用“类检查”,因为我的appdelegate的接口.h中有弹出窗口的实例。我会尝试编译该设备,看看会发生什么。 – DigitalVanilla 2010-05-23 09:29:17

+0

Okkei, 我设法运行: 基本上,如果你在.h文件中实例化的任何新的UIKit,您必须使用“ID”,而不是演员。非常通用。然后在任何电话的.m中,你必须检查Class,最后是一团糟。 构建通用应用程序需要3次以上的检查我猜。 但它现在工作:) – DigitalVanilla 2010-05-23 17:02:46

0

您只能使用3.2 Base SDK和iPhone OS Deployment Target 3.1.3(或更早版本)进行构建。当你这样做时,模拟器将只能以3.2/iPad运行。就是这样。

因此您需要在实际设备上进行调试以进行iPhone测试。