-->

iOS版SDK 6.1的UITableView的不兼容与iOS SDK 5.1(UITableVie

2019-10-17 16:07发布

我创建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:]:无法识别的选择发送到实例

Answer 1:

如果你看看苹果的文件,你会看到dequeueReusableCellWithIdentifier: forIndexPath:进来与iOS 6.0。

这意味着,如果你试图调用在iOS 5.X设备,这个方法,它会抛出异常。

这将是更好,如果你使用的旧的“ dequeueReusableCellWithIdentifier: ”呼叫如果可能的话。

在两个电话之间的一个很大的区别是,后者(旧的), 可以返回零,在这种情况下,你需要分配/初始化一个新的可重复使用的电池。



Answer 2:

1. dequeueReusableHeaderFooterViewWithIdentifier
可用性
可用在IOS 2.0和更高。
- >运行此功能所需的最低IOS版本是奥斯2.0

2 .dequeueReusableCellWithIdentifier:forIndexPath:
可用性
可用在IOS 6.0及更高版本。
- >运行此功能所需的最低IOS版本的iOS6.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
}


文章来源: UITableView of iOS SDK 6.1 don't compatible with iOS SDK 5.1