Sup*_*off 4 cocoa-touch objective-c deprecated ios
我正在开发iOS应用程序.我希望它支持iOS 7和8.它非常好,但是应用程序的许多不同部分都使用Apple API.其中一些API适用于iOS 8和7.但是,其中一些API在iOS 8中已弃用.因此,我去Apple开发者网站查看要替换它们的内容(new methods/etc ....).
但是,我现在遇到的问题是该应用程序可以在iOS 8上正常运行,但是它的某些部分在iOS 7上无法正常工作,因为我正在尝试使用iOS 8 API ......(笑) .
所以我只想知道,实现在iOS 8和7上运行的代码的最佳方法是什么.我有一些想法(下面),但我不确定哪个最好:
IDEA 1
每当我的代码在两个操作系统上都不起作用时,我会使用if函数(调用宏),如下所示:
if (SYSTEM_VERSION_LESS_THAN(@"8.0")) {
// iOS 7 device. Use iOS 7 apis.
}
else {
// iOS 8 (or higher) - use iOS 8 apis.
}
Run Code Online (Sandbox Code Playgroud)
IDEA 2
我正考虑在应用程序周围使用ifdef定义,如下所示:
#ifdef __IPHONE_8_0
// iOS 8 code here....
#else
// iOS 7 code here....
#endif
Run Code Online (Sandbox Code Playgroud)
哪种方式更好?我本以为第二个想法更快,使用的资源更少?
或者我的想法都是垃圾?有没有更好的方法来解决这个问题?
谢谢你的时间,丹.
我不建议检查版本并根据它编写代码.相反,您需要检查该API是否可用.
用于检查是否有类:
Class checkClass = NSClassFromString(@"CheckingClass");
if (checkClass)
{
// Available
}
else
{
// Not Available
}
Run Code Online (Sandbox Code Playgroud)
如果您需要检查可用的功能/功能;
if ([checkClass respondsToSelector:@selector(yourMethod:)])
{
// Feature/ Method Available
}
else
{
// Feature/ Method Not Available
}
Run Code Online (Sandbox Code Playgroud)
注意:
不推荐使用的API并不意味着您不应该在当前版本中使用它.这意味着,从下一个版本开始它将无法工作,并且只能工作到当前版本.