我知道禁止使用私有API函数或类,因为它们可以在将来的iOS版本中更改。所以我想知道如果私有函数现在在新的iOS中公开,是否允许它。
我的例子是MPMoviePlayerController,它在3.2之前的iOS中有一个名为currentTime的私有属性。从3.2版开始,它被称为currentPlaybackTime并且可以使用。如果它可以在较新的版本中使用,它可以在较旧的版本中使用吗?
谢谢
答案 0 :(得分:1)
不,在旧版iOS上,该属性仍然是私有的,我们只能猜出原因。
在这种情况下,您应该采用与支持以前操作系统中不可用的新功能时相同的方法:根据可用性有条件地使用它们。
如果要使用currentPlaybackTime
属性,则应该对声明它的框架进行弱链接,并对其可用性进行运行时检查。
这样的事情:
if ([playerController respondsToSelector:@selector(currentPlaybackTime)])
{
// do something with currentPlaybackTime
}
else
{
// fail-over to something supported and not private.
}
请记住:在编译iOS应用时,您应该针对最新和最好的iOS SDK版本进行编译,并将部署目标设置设置为您愿意支持的最旧版本的iOS。