iOS – 获得一个奇怪的错误:无法识别的选择器发送到UITableView上的实例

iOS – 获得一个奇怪的错误:无法识别的选择器发送到UITableView上的实例,第1张

概述介绍 在我当前的应用程序中,我有一个UITableView,它包含自定义单元格对象.自定义UIViewCellObjects只是标准UITableViewCell类的子类.自定义单元格保存有关运行后台上载的信息,并使用百分比完成等 *** 作更新它们. 自定义单元格对象从后台运行的上载进程中侦听NSNotifications,当它们收到相关通知时,它们只是使用新信息(例如上载百分比)更新自己的视图控件. 介绍

在我当前的应用程序中,我有一个UItableVIEw,它包含自定义单元格对象.自定义UIVIEwCellObjects只是标准UItableVIEwCell类的子类.自定义单元格保存有关运行后台上载的信息,并使用百分比完成等 *** 作更新它们.

自定义单元格对象从后台运行的上载进程中侦听NSNotifications,当它们收到相关通知时,它们只是使用新信息(例如上载百分比)更新自己的视图控件.

现在,当上传过程完成后,我重新排序活动上传对象数组并重新加载tablevIEw,如下所示:

-(voID) uploadFinished: (NSNotification*)notification{    NSDictionary *userInfo = [notification userInfo];NSNumber *uploadID = [userInfo valueForKey:@"uploadID"];if (uploadID.integerValue == uploadActivity.uploadID){       [[ApplicationActivitIEs getSharedActivitIEs] markUploadAsFinished:uploadActivity];    [parenttable reloadData];    [self setUploadComplete];}}

现在这个方法发生在tablevIEwcell对象中,正如你所看到的,他们调用自己的UItableVIEw来在数组排序后立即重新加载数据. markUploadAsFinished方法只是重新排序数组,因此任何新完成的上传都放在顶部,因此它将以这种方式出现在UItableVIEw中.

问题

现在我遇到的问题是,当调用此方法时,我有时会收到以下错误
‘NSinvalidargumentexception’,原因:’ – [CALayer tableVIEw:numberOfRowsInSection:]:发送到实例的无法识别的选择器

我不是总是得到它,有时整个过程运行良好,完成的上传出现在UItablevIEw的开头,而在其他看似随机的时间失败.我真的不知道这里发生了什么.

自定义单元格从.NIB文件加载,如下所示:

UploadCell *cell = [activeUploadstable dequeueReusableCellWithIDentifIEr:@"UploadProgressCell"];if (cell == nil){    [[NSBundle mainBundle] loadNibnamed:@"UploadCellVIEw" owner:self options:nil];    cell = customCell;}

有没有人可能对这里发生的事情有所了解?

编辑

首先,我已经追踪到这个错误,以便出现在以下行:
reloadData

在自定义单元格对象内部调用.

此外,似乎它发送方法的实例可以改变.我也遇到了这个错误:

'NSinvalidargumentexception',reason: '-[UIScrollVIEwPanGestureRecognizer tableVIEw:numberOfRowsInSection:]: unrecognized selector sent to instance

我真的不知道这里发生了什么.

解决方法

‘-[CALayer tableVIEw:numberOfRowsInSection:]: unrecognized selector sent to instance

你的指针很糟糕.看起来您的表的数据源在表仍然存在时被释放.该表不保留其数据源,因为这可能会创建保留周期.如果在表使用数据源时不小心保留数据源,则表将使用指向不再存在的对象的指针.在这种情况下,看起来随后在同一地址创建了CALayer对象.当表稍后向其“数据源”发送一条消息以获取行数时,该消息将传递给该层,这显然没有-tableVIEw:numberOfRowsInSection:方法,并且会产生错误结果.

总结

以上是内存溢出为你收集整理的iOS – 获得一个奇怪的错误:无法识别的选择器发送到UITableView上的实例全部内容,希望文章能够帮你解决iOS – 获得一个奇怪的错误:无法识别的选择器发送到UITableView上的实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1064296.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存