博客> iOS,UITableView的重用机制
iOS,UITableView的重用机制
2020-01-21 08:11 评论:0 阅读:584 wanghiccup
iOS开发
   在iOS开发中,经常会用到UITableView这个控件进行开发,我们会使用cell的重用机制来减少手机的内存开销,使得界面滑动的时候更加流畅。

在使用xib创建的cell进行开发时,经常是在viewDidLoad中进行nib文件的注册,

  • (void)viewDidLoad { [super viewDidLoad]; [self.tableView registerNib:[UINib nibWithNibName:@"PromptMessageTableViewCell" bundle:nil] forCellReuseIdentifier:@"PromptMessageCell"]; }

然后在UITableViewDataSource的方法中进行重用机制,

  • (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath { //一般情况下,只要是在注册了上面的方法之后,直接调用下面的这一行代码就可以解决问题。 PromptMessageTableViewCell promptMessageCell=[tableView dequeueReusableCellWithIdentifier:@"PromptMessageCell" forIndexPath:indexPath]; //测试时却出现了下面的异常 ** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3599.6.1/UITableView.m:8035 不得已添加下面的代码进行判空操作 if (promptMessageCell==nil) { //防止重用队列为空的异常 promptMessageCell=[[[NSBundle mainBundle] loadNibNamed:@"PromptMessageTableViewCell" owner:self options:nil] lastObject]; } return promptMessageCell; }
收藏
0
sina weixin mail 回到顶部