iOS SDK 6.1的UITableView与iOS SDK 5.1不兼容

时间:2013-02-06 10:59:21

标签: iphone uitableview ios5.1 ios6.1

我在XCode 4.6中使用iOS 6.1 SDK创建了UITableView项目,并将目标sdk设置为5.1,当应用程序在dequeueReusableCellWithIdentifier函数中调用cellForRowAtIndexPath时,应用程序抛出异常,模拟器是5.1,在模拟器6.x上没问题。

1: [UITableView dequeueReusableCellWithIdentifier:forIndexPath:]:无法识别的选择器已发送到实例

2:因未捕获的异常NSInvalidArgumentException而终止应用,原因:-[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]:无法识别的选择器已发送到实例

2 个答案:

答案 0 :(得分:6)

<强> 1。 dequeueReusableHeaderFooterViewWithIdentifier
状况
适用于iOS 2.0及更高版本 - &gt; 运行此功能所需的最低iOS版本为 iOS 2.0

2.dequeueReusableCellWithIdentifier:forIndexPath:
状况
适用于iOS 6.0及更高版本 - &gt; 运行此功能所需的最低iOS版本为 iOS 6.0

修改 如果您想使用此功能,您可以检查当前的设备版本,然后实施此

NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
NSLog(@"curr version = %f",[currSysVer floatValue]);

if ([currSysVer floatValue] >= 6) {
    //iOS 6.0 and later code
    // dequeueReusableCellWithIdentifier:forIndexPath:
}
else{
    //dequeueReusableHeaderFooterViewWithIdentifier
}

答案 1 :(得分:2)

如果您查看Apple文档,您会看到{6.0}带来了dequeueReusableCellWithIdentifier: forIndexPath:

这意味着如果您尝试在iOS 5.X设备上调用此方法,则会抛出异常。

如果可能的话,最好使用较早的"dequeueReusableCellWithIdentifier:"电话。

两个调用之间的一个重要区别是后者(较旧)一个可以返回nil,在这种情况下,您需要分配/初始化一个新的可重用单元。