Cod*_*gle 4 custom-controls uitableview ios unrecognized-selector
介绍
在我当前的应用程序中,我有一个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];
}
}
Run Code Online (Sandbox Code Playgroud)
现在这个方法发生在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;
}
Run Code Online (Sandbox Code Playgroud)
有没有人可能对这里发生的事情有所了解?
编辑
首先,我已经跟踪了这个错误,显示在以下行:reloadData
在自定义单元格对象内部调用.
此外,似乎它发送方法的实例可以改变.我也遇到了这个错误:
'NSInvalidArgumentException', reason: '-[UIScrollViewPanGestureRecognizer tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)
我真的不知道这里发生了什么.
' - [CALayer tableView:numberOfRowsInSection:]:发送到实例的无法识别的选择器
你的指针很糟糕.看起来您的表的数据源在表仍然存在时被释放.该表不保留其数据源,因为这可能会创建保留周期.如果在表使用数据源时不小心保留数据源,则表将使用指向不再存在的对象的指针.在这种情况下,看起来随后在同一地址创建了CALayer对象.当表稍后向其"数据源"发送一条消息以获取行数时,该消息将传递给该层,这显然没有-tableView:numberOfRowsInSection:
方法,并且会产生错误.
归档时间: |
|
查看次数: |
3676 次 |
最近记录: |