我在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:]:
无法识别的选择器已发送到实例
答案 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,在这种情况下,您需要分配/初始化一个新的可重用单元。