Answers:
我今天刚刚构建了一些东西,指定了iOS 4.0的部署目标。在仅在Architectures中指定armv7的情况下,Xcode警告我,要支持iOS4.2以下的任何内容,我必须在Architectures中包括armv6。只需编辑该字段,在对话框弹出时单击“ +”按钮,然后输入文字“ armv6”。
就我而言,我们希望我们的应用程序可以在iOS4和iOS5下运行。我们必须进行一些修改,才能在iOS5下正常工作,但是所有这些更改都是通过对iOS4友好的代码更改完成的。
我们还以某种方式添加了一些特定于iOS5的功能,该功能允许该应用在iOS4下运行而不会崩溃。具体来说,我们在尝试使用iOS5功能之前进行了测试,并将仅iOS5的库链接为可选。
因此,在iOS5世界中支持iPhone3G可能就很容易意味着“我们希望我们的应用程序在iOS4及更高版本上运行(无论使用任何iOS5功能)”,而不是“我们希望确保我们的应用程序在运行iOS5的旧设备上运行”。这里有所不同;考虑一下。:-)
无论如何,重新添加armv6支持非常容易。我猜的意思是:在某个时刻,当不再有armv6设备在那里(不必担心)时,您不必为此而构建。苹果公司认为,每个人都应尽快升级到最新的硬件。因此,在那个世界中,除了最新和最强大的工具外,也不需要默认任何工具。:-)幸运的是(或没有),我们的开发人员生活在现实世界中,并且意识到您必须在一段时间内支持较旧的东西。我想Xcode开发团队也知道这一点,这就是为什么您可以很简单地添加armv6支持的原因。
还请确保您在“项目和目标”中进行了设置...花了我一个小时才能弄清楚。将它设置为一个,但没有另一个。希望这可以帮助。GLTA
我认为Apple从标准设置中删除armv6是有原因的。
我已经使用iOS5 SDK编译了armv7 / armv6,但是armv6编译器在发布模式下生成了错误的代码。在寻找解决方法数小时后(尝试使用不同的优化级别尝试llvm或gcc),我放弃了。
因此,只要支持较旧的armv6设备,我就会回到iOS SDK4.x。
代码示例:
// myView center=(160, 100)
CGPoint p=myView.center;
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100)
p.y+=100;
// now p =(200,200) (what the heck?)
也许我有一些内存损坏,但是,在armv7编译器和iOSSDK <5.0上,它的行为符合预期。
最好的祝福