1

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

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

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

4

2 回答 2

6

1. dequeueReusableHeaderFooterViewWithIdentifier
可用性
适用于 iOS 2.0 及更高版本。
->运行此功能所需的最低 iOS 版本为iOS 2.0

2 .dequeueReusableCellWithIdentifier:forIndexPath:
可用性
适用于 iOS 6.0 及更高版本。
->运行此功能所需的最低 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
}
于 2013-02-06T11:22:11.987 回答
2

如果您查看 Apple 文档,您会发现dequeueReusableCellWithIdentifier: forIndexPath:iOS 6.0 附带了该文档。

这意味着如果您尝试在 iOS 5.X 设备上调用此方法,它将引发异常。

如果可能的话,如果你使用旧的" dequeueReusableCellWithIdentifier:"调用会更好。

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

于 2013-02-06T11:07:23.233 回答