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