gpt4 book ai didi

iphone - 支持4.0/3.2之前的iOS版本以及NSClassFromString的问题

转载 作者:行者123 更新时间:2023-12-03 21:10:42 25 4
gpt4 key购买 nike

我目前正在开发 iPhone 应用程序,暂时需要 4.x 之前的版本支持这些应用程序。

当我想使用 4.x 或 3.2 特定的东西时,我会使用通常的方法来检查给定的类是否存在,即:

if(NSClassFromString(@"SomeClass")) {
// do stuff here
}

这在大多数情况下都有效,除非它不起作用。让我解释一下:

类如:

  • UIMoviePlayerViewController(根据文档,仅在 3.2+ 上可用)
  • UIGestureRecognizer 子类(如 UIPanGestureRecognizer、UITapGestureRecognizer 等)

实际上解析为有效的类,就好像它们已经在早期版本的私有(private) API 上可用一样。是这样吗,还是我遗漏了什么?

这真的很糟糕,因为 NSClassFromString() 方法实际上是 Apple 推荐的。

为了安全起见,我当前正在检查操作系统版本,而不是对类是否存在进行运行时检查。

还有人遇到这个问题吗?谢谢。

最佳答案

不,你没有做错什么,有许多私有(private)类在 3.2/4.0 中公开了。如果它们只是公开现有的功能,那么这并不是什么大问题,但这些类通常也具有显着改变的功能。

唯一 100% 可行的事情就是测试版本,尽管这通常不被允许。即使对特定选择器进行测试也可能不够,因为无法保证旧版本上的选择器的行为与公开对象的版本上的选择器相同。

关于iphone - 支持4.0/3.2之前的iOS版本以及NSClassFromString的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com