我在标题中声明了以下属性:
@property (nonatomic, strong) UIRefreshControl *refreshControl;
我也在需要支持iOS 5
的应用中使用此功能。在UIRefreshControl
之前未添加iOS6
,因此我希望根据其可用性有条件地添加它。我知道用于检查方法是否可用的respondsToSelector
方法,但是如何在您声明属性的头文件中执行此操作?此外,使用UIRefreshControl
的关联方法必须进行条件编码。
感谢任何帮助或指导。
只是通过声明UIRefreshControl属性,应用程序会在iOS 5中崩溃吗?
答案 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];
}