我知道这个问题的某些部分是在几个变体中被问到的,但我想确保我做对了。
以下是我的假设和理解,如果在提交之前它们是正确的,我想知道。
我的应用程序假定所有操作系统都支持的功能,因此我应该:
最后一个问题 - 苹果允许选择iPhone OS 2.0作为部署目标吗?
提前致谢,
BTW - 这个问题的主要原因之一是因为在使用早期的SDK编译时,当这个动画被保存多次使用时,苹果似乎在释放UIImageView动画数组的内存时遇到了问题。这是用SDK 3.0修复的已知问题(通过简单地将UIImageView动画数组设置为nil)答案 0 :(得分:28)
Base和Active SDK之间的区别在于前者是项目的默认SDK集,后者是您当前构建的SDK。因此,您的Active SDK可能是Base SDK,此时XCode将使用您为项目指定的SDK。
为了尽可能为最广泛的设备构建您的应用,您是对的:
Apple允许您将iPhone 2.0指定为部署目标,但请记住在iPhone 2.0之后发布的任何API或框架,默认情况下您无法使用它们。有techniques to use features from later SDKs,但它们并不重要。
答案 1 :(得分:8)
您应该将Base SDK构建设置设置为包含您打算使用的所有功能的最新SDK(通常是最新的可用SDK),并将“iPhone部署目标”构建设置设置为最早版本的您想要运行的操作系统。
然后,您需要确保在运行时检查早期操作系统中可能不存在的任何功能。
答案 2 :(得分:3)
“Base SDK”是您的应用程序可以支持的最大SDK。这里有一个硬限制 - 您无法选择未来未发布的SDK。
“部署目标”是您愿意支持的最低SDK。你愿意回到多久。
Xcode似乎对“部署目标”造成虚假依赖。例如,即使在此安装上安装了4.3,5.0和5.1 API和模拟器,我也无法使用Xcode 4.5.2(Xcode 4.5.2与iOS 6.0配对)在我的iOS 5.1.1 iPod上进行开发。我需要在我的iOS 6.0 iPhone中使用模拟器或插孔。
Apple正在玩的游戏似乎也会导致应用程序出现问题。我购买的Elements副本不会通过iTunes同步到iPod,因为Elements需要运行更新版本的iOS(它在我的iOS 6.0 iPhone上同步并运行良好)。
我有两台iPad,一台是4.3。我不禁想到它会造成多么混乱。
答案 3 :(得分:1)
一般而言;
将BASE SDK设置为您愿意支持和测试的最新SDK。
将部署目标设置为您愿意支持和测试的最低版本的iOS。
如果您碰巧使用部署目标SDK上未提供的Base SDK功能,则应用程序将在运行时在旧设备上崩溃,因此测试至关重要。
替代/补充过程将使用Deploymate http://www.deploymateapp.com/进行静态代码分析以识别问题。
如果你来自android世界,那么类比就是这样;
TargetSDK - >基础SDK
MinSDK - >部署目标
Lint - > Deploymate