在旧版 iOS 中使用私有 API 属性,在新版 iOS 中使用公共 API 属性
我知道禁止使用私有 API 函数或类,因为它们可能会在 iOS 的未来版本中发生更改。所以我想知道在新的 iOS 中是否允许私有函数现在公开。
我的例子是 MPMoviePlayerController,在 3.2 之前的 iOS 中,它有一个名为 currentTime 的私有属性。从版本 3.2 开始,它称为 currentPlaybackTime 并且可以使用。如果可以在新版本中使用,那么它可以在旧版本中使用吗?
谢谢
I know it is forbidden to use private API functions or classes, because they can change in a future version of iOS. So I wondering if it is allowed if a private function is now public in a new iOS.
My example is MPMoviePlayerController which has a private property called currentTime in iOS before 3.2. Starting version 3.2, it is called currentPlaybackTime and can be used. If it can be used in newer versions, can it be used in older ?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,在旧版本的 iOS 上,该属性仍然是私有的,我们只能猜测原因。
在这种情况下,您应该采取与寻求支持以前操作系统中不可用的新功能时相同的方法:根据可用性有条件地使用它们。
如果您想使用
currentPlaybackTime
属性,您应该对声明它的框架进行弱链接,并对其可用性进行运行时检查。像这样的事情:
请记住:编译 iOS 应用程序时,您应该针对最新且最好的 iOS SDK 版本进行编译,并将部署目标设置设置为您愿意支持的最旧的 iOS 版本。
No, on older version of iOS the property is still private, we can only guess at reasons why.
In cases like this, you should take the same approach as you would when looking to support new features that aren't available in a previous OS: use them conditionally based on availability.
If you want to use the
currentPlaybackTime
property, you should weak-link against the framework in which it is declared and do a runtime check for its availability.Something like this:
Remember: when compiling your iOS app, you should be compiling against the lastest-and-greatest iOS SDK version and setting your Deployment Target setting to the oldest version of iOS that you're willing to support.