iOS有条件地声明UIRefreshControl的属性

时间:2014-01-08 18:37:02

标签: ios objective-c

我在标题中声明了以下属性:

@property (nonatomic, strong) UIRefreshControl *refreshControl;

我也在需要支持iOS 5的应用中使用此功能。在UIRefreshControl之前未添加iOS6,因此我希望根据其可用性有条件地添加它。我知道用于检查方法是否可用的respondsToSelector方法,但是如何在您声明属性的头文件中执行此操作?此外,使用UIRefreshControl的关联方法必须进行条件编码。

感谢任何帮助或指导。

只是通过声明UIRefreshControl属性,应用程序会在iOS 5中崩溃吗?

2 个答案:

答案 0 :(得分:3)

由于您将使用iOS 6或7 SDK进行编译,因此您可以安全地在标题中包含该属性,而不会对运行iOS 5的设备产生负面影响。

只要您有条件地包装代码,就不会有问题。

// Add pull-to-refresh
if (NSClassFromString(@"UIRefreshControl"))
{
    self.refreshControl = [[UIRefreshControl alloc] init];
    [_refreshControl addTarget:self action:@selector(startPullToRefresh) forControlEvents:UIControlEventValueChanged];
    [self.tableView addSubview: _refreshControl];
}

答案 1 :(得分:0)

我没有对此进行测试,但您可以将其声明为id,如下所示:

@property (nonatomic, strong) id refreshControl;

当您实例化它时,请执行以下操作:

Class refreshClass = NSClassFromString(@"UIRefreshControl");
if(refreshClass){
  _refreshControl = [[refreshClass alloc]init];
}