如果用户的iOS版本低于7.0,我应该使用7.0中弃用的方法吗?

Vol*_*ort 1 objective-c ios

  • 我使用的是SDK 7.0
  • 我的部署目标是4.3
  • 我正在使用5.0模拟器进行测试

我看到一种方法在Apple的文档中说" A在iOS 7.0中弃用了Method ,而不是使用B".

我认为我把事情搞混了,所以要明确:

  • 如果我识别用户的iOS版本(5.0),我应该使用AB?因为它是5.0,A应该是可用的,而B可能不是因为它是后来实现的,对吧?

  • 或者我使用SDK 7.0的事实是否意味着我应该总是使用B,无论用户的iOS版本如何?

rma*_*ddy 5

使用旧方法.在旧版本的iOS下,方法B将不可用.贬值的方法很少(从来没有到目前为止?)实际上消失了.唯一的例子是,UIDevice uniqueIdentifier但即使没有消失,它现在只是返回垃圾.

当然你可以这样做:

if ([someClass resondsToSelector(someNewerMethodSelector)]) {
    // call the new method
} else {
    // call the old method
}
Run Code Online (Sandbox Code Playgroud)

像这样的代码将运行较新的方法(如果存在)或旧方法(如果不存在).也可以对较新的类进行类似的检查.

顺便说一句 - 为什么要花费精力来支持iOS 4.3甚至5.x?如果你有充分的理由支持iOS 7和iOS 6.x. 除非您有特定的需求或要求,否则支持4.3和5.x并不值得您付出努力.

如果你继续支持4.3,你最好在4.3的设备上彻底测试你的应用程序,以确保你不小心打电话和5.0+ API.