内容简介:翻译自: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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 编写 MSBuild 内联编译任务(Task)用于获取当前编译环境下的所有编译目标(Target)
- MSBuild 在编写编译任务的时候判断当前是否在 Visual Studio 中编译
- Linux 环境下 gcc 链接库 编译、链接(概览) 以及 自动化工具Makefile的编写
- 在项目文件 / MSBuild / NuGet 包中编写扩展编译的时候,正确使用 props 文件和 targets 文件
- 基于顺丰同城接口编写sdk,java三方sdk编写思路
- 使用 Clojure 编写 OpenWhisk 操作,第 1 部分: 使用 Lisp 方言为 OpenWhisk 编写简明的代码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!