美文网首页
UITableView--代码优化

UITableView--代码优化

作者: JQWONG | 来源:发表于2019-11-06 17:12 被阅读0次

UITableView在日常中使用频率非常高,是一个非常基础的控件,可以说市面上的App都会用到UITableView
本文用于记录工作中对于TableView的改进与总结
UITableView官方文档

问题一

UITableViewCell是可以重用的,重用需要用到唯一标识符(defaultReuseIdentifier),通过defaultReuseIdentifier去指定重用Cell的类型,常用就是给Cell一个字符串作为defaultReuseIdentifier,但是这样子即使是用常量来作为defaultReuseIdentifier,还是很容易搞错也很容易重复

  • 优化
    通过对UITableViewCell进行扩展,写一个方法,返回值是类名,因为类名在一个项目中是唯一的,所以也避免了重名的问题
extension UITableViewCell {
    @objc static var defaultReuseIdentifier: String {
        return String(describing: self)
    }
}

在对Cell进行注册与设置的时候可以直接调用这个方法,只要是需要重用的都可以借鉴这个方法,减少重复的代码量


问题二

Swift与OC其中一个区别就是Swift允许传空,如果参数为可选类型那么就需要进行guard let或者if let的操作
当我们有若干个自定义的Cell要显示在UITableView上,在代理方法cellForRowAtIndexPath中,我们每setup一种类型的Cell都需要进行guard let的操作,这是一个重复繁琐的过程

override  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: EditorRadioTableViewCell.defaultReuseIdentifier, for: indexPath) as? EditorRadioTableViewCell 
          else { return UITableViewCell() }
          // setup your cell
        return cell
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let cell = tableView.dequeueReusableCell(withIdentifier: FoodSafetyItemTableViewCell.defaultReuseIdentifier) as? FoodSafetyItemTableViewCell {
          // setup your cell
            return cell
        }
        return UITableViewCell(style: .default, reuseIdentifier: UITableViewCell.defaultReuseIdentifier)
    }
  • 优化
    我们可以写一个Extension来重写dequeueReusableCell这个方法,返回类型是一个泛型,简化我们的代码
public func dequeueReusableCell<T: UITableViewCell>(_ cellType: T.Type, for indexPath: IndexPath) -> T {
        guard let cell = dequeueReusableCell(withIdentifier: cellType.defaultReuseIdentifier, for: indexPath) as? T else {
            fatalError("Could not deque cell of type: \(cellType.defaultReuseIdentifier)")
        }
        return cell
    }
  • 使用方法
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(DebugMenuCell.self, for: indexPath)
        //setup your cell
        return cell
    }

这样看起来代码简洁渡提高了不少,减少了不必要的繁琐的guard let操作,这个方法把defaultReuseIdentifier也直接封在里面了,不需要再自己去写唯一标识符。

待续未完,持续更新
版权所有,谢谢!

相关文章

  • UITableView--代码优化

    UITableView在日常中使用频率非常高,是一个非常基础的控件,可以说市面上的App都会用到UITableVi...

  • Python-02进阶-07代码优化技巧

    代码优化技巧 优化原则 核心技巧 其他技巧 Python 代码性能优化技巧 常用代码优化技巧 sort()优于so...

  • web前端开发编码规范及性能优化

    代码优化 这个部分仅仅将代码优化本身,不考虑性能,关于代码部分的性能优化在 页面渲染 部分 代码优化 中 HTML...

  • 编译器笔记46-代码优化-常用的代码优化方法

    优化的分类 机器无关优化: 针对中间代码 机器相关优化: 针对目标代码 局部代码优化: 单个基本块范围内的优化 全...

  • java综合知识点(四,优化篇)

    优化篇 一、代码优化 代码结构层次的优化(目的:更加方便代码的维护--可维护性,可读性) 1.代码注释(代码规范)...

  • 编译原理系列之十 代码优化

    代码优化 代码优化可分为与机器有关的优化和与机器无关的优化。与机器有关的优化一般在目标代码上进行。与机器无关的优化...

  • 腾讯做优化的大佬三下五除二让我程序快了200%

    这篇文章主要跟大家说说程序性能优化,说到程序性能优化咱们先来谈谈代码优化~ 代码优化 代码优化其实一个很重要的课题...

  • Android优化

    压缩APK文件 优化UI 内存优化 优化代码查看代码逻辑,提取通用代码设计模式 压缩APK文件 Android s...

  • 编译原理四——代码优化

    代码优化 代码优化的含义是:对代码进行等价变换,使得变换后的代码具有更高的时间效率和空间效率。代码优化的目的是提高...

  • 代码优化总结

    目录 代码优化的引出 代码优化的目标 代码优化细节(1)尽量指定类、方法的final修饰符(2)尽量重用对象(3)...

网友评论

      本文标题:UITableView--代码优化

      本文链接:https://www.haomeiwen.com/subject/sraybctx.html