1

有时,新版本的 iOS 中添加了一些很容易使用的功能,但您不想仅仅因为一个小功能就阻止旧设备上的用户使用该应用程序。

我刚刚添加UIRefreshControl到一个应用程序,该应用程序是在 iOS 6 中添加的。我不太关心使用 3rd 方解决方案(其中有很多),我只是不想调用设置的代码如果我在旧设备上运行它。我怀疑,作为一种静态语言,这是不可能的,但我想我会问一下,看看是否有办法实现这一点。

显然,如果我只是共享代码,我可以使用预处理器宏来执行此操作,但我需要构建应用程序以在 iOS 5.1 + iOS 6.0 上执行。

4

1 回答 1

5

这是完全可能的,只需检查一个类是否可用:

if ([UIRefreshControl class]) {
   // the UIRefreshControl is available.
}

与现有类的新方法相同:

if ([self.someLabel  respondsToSelector:@selector(setAttributedText:)]) {
    // The label support attributed strings
}

Objective-c 并不是你想象的那样是静态的,只要确保你弱链接任何在早期版本的 iOS 中不可用的框架。

于 2013-01-29T12:10:15.913 回答