xcode – 编写针对iOS 6 Base SDK编译的iOS7代码

栏目: IOS · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/18303786/writing-ios7-code-that-compiles-against-ios-6-base-sdk

我们现在有一个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错误:

Property ‘fooForExtendedLayout’ not found on object of type  ‘UIViewController *’
Use of undeclared identifier ‘UIFooEdgeLeft’
Use of undeclared identifier ‘UIFooEdgeRight’
Property ‘bottomLayoutFoo’ not found on object of type ‘UIViewController *’

评论这个新代码会很痛苦.重新编写它以与新旧Base SDK兼容的正确方法是什么,现在提交它(通过XCode 4并针对iOS 6 SDK构建)会冒任何类型的App Store拒绝风险?

我建议等到iOS 7准备好提交您的更新.

但是,它们是解决问题的方法.

Property ‘fooForExtendedLayout’ not found on object of type  ‘UIViewController *’

由于属性只是一种语法糖,修复此类错误的简单方法是使用选择器来调用方法(setter):

[ self performSelector: NSSelectorFromString( "setFooForExtendedLayout:" ) withObject: ( id )xxx ];

@selector()无法使用,因为您要求使用iOS 6 SDK的iOS 7选择器.

因此使用NSSelectorFromString.

withObject参数是为对象创建的,顾名思义.但是由于对象是指针,并且因为你的方法采用枚举值,你可以使用强制转换实际传递它而没有问题.

Use of undeclared identifier ‘UIFooEdgeLeft’  Use of undeclared identifier ‘UIFooEdgeRight’

现在关于你的枚举值,没有这样的技巧.

唯一的方法是使用与iOS 7 SDK中相同的值声明它们,并祈祷它在官方发布之前不会更改.

所以现在由你决定……就个人而言,我会等待.

翻译自:https://stackoverflow.com/questions/18303786/writing-ios7-code-that-compiles-against-ios-6-base-sdk


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Mastering Regular Expressions, Second Edition

Mastering Regular Expressions, Second Edition

Jeffrey E F Friedl / O'Reilly Media / 2002-07-15 / USD 39.95

Regular expressions are an extremely powerful tool for manipulating text and data. They have spread like wildfire in recent years, now offered as standard features in Perl, Java, VB.NET and C# (and an......一起来看看 《Mastering Regular Expressions, Second Edition》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具