是否可以有条件地使用iOS 6功能但仍支持旧设备?

时间:2013-01-29 12:05:11

标签: iphone objective-c

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

我刚刚将UIRefreshControl添加到iOS 6中添加的应用中。我真的不在乎使用第三方解决方案(其中有一个号码),我只是如果我在旧设备上运行,则不要调用设置它的代码。我怀疑,作为一种静态语言,这是不可能的,但我想我会问,看看是否有办法实现这一点。

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

1 个答案:

答案 0 :(得分:5)

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

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

对现有类的新方法也一样:

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

Objective-c不像你想象的那样是静态的,只要确保你弱连接任何早期版本的iOS中没有的框架。