我们现在有一个 iOS 应用程序在售,我们正在使用相同的代码库在 XCode 5 DP 上开发 iOS 7 版本。
我们现在确实需要为现有的 iOS 5/6 客户发布更新,但是,当然,当我们将项目重新加载到 XCode 4 中时,它会抱怨不存在的属性,因为 Base SDK 变成了 iOS6,而不是 7:
// Only run this bit on iOS 7
if ([self respondsToSelector:@selector(setFooForExtendedLayout:)])
{
self.fooForExtendedLayout = UIFooEdgeLeft | UIFooEdgeRight;
}
float bottomOffset = 0;
// Only run this bit on iOS 7, else leave bottomOffset as 0
if ([self.hostController respondsToSelector:@selector(bottomLayoutFoo)])
bottomOffset = self.hostController.bottomLayoutFoo.length;
(混淆以避免破坏 NDA)
XCode 错误:
在“UIViewController *”类型的对象上找不到属性“fooForExtendedLayout”
使用未声明的标识符“UIFooEdgeLeft”
使用未声明的标识符“UIFooEdgeRight”
在“UIViewController *”类型的对象上找不到属性“bottomLayoutFoo”
注释掉这个新代码会很痛苦。重写它以与新旧 Base SDK 兼容的正确方法是什么,现在提交它(通过 XCode 4 并针对 iOS 6 SDK 构建)是否有任何形式的 App Store 拒绝风险?