在较旧的iOS中使用私有API属性,在较新的iOS中使用public

时间:2010-10-15 08:47:03

标签: iphone mpmovieplayercontroller iphone-privateapi

我知道禁止使用私有API函数或类,因为它们可以在将来的iOS版本中更改。所以我想知道如果私有函数现在在新的iOS中公开,是否允许它。

我的例子是MPMoviePlayerController,它在3.2之前的iOS中有一个名为currentTime的私有属性。从3.2版开始,它被称为currentPlaybackTime并且可以使用。如果它可以在较新的版本中使用,它可以在较旧的版本中使用吗?

谢谢

1 个答案:

答案 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。