
在我当前的应用程序中,我有一个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上的实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)