• 不错的设计思路


    1.数据加载后,下拉刷新失败,该怎么办?

      常用的做法:显示加载失败页面.

      不错的做法:上次加载成功,数据肯定不为空....

            1>若下拉刷新失败,且数据不为空,就返回成功.

            2>若下拉刷新成功,就删除以前的数据,若请求的数据为空,就返回失败.

    2.巧用懒加载.

      通过下划线设置没有数据时的图片,通过点语法让该图片隐藏.(适用于图片很少被用到,却仍需要显示的情况.)

    3.上拉刷新可以用系统自带的代理方法willDisplayCell.

      由于请求数据还没到,不可能刷新 tableview,代理方法willDisplayCell只会调用一次, 因此在此之前只需要判断 indexpath.item 和数组个数的关系,便能做到快捷的上拉刷新.

    4.隐藏 tableview 的 section 对应的 hearder 悬浮.

      有时候不想看到section的 hearder 悬浮在顶部,可以找个 view 放在 header 固定的位置,或者在导航栏的 shadowImage 设置一个空白的图片,遮住 header.

    5.视图属性到底用 weak 还是 strong?

      对于某些临时显示,占用资源又过多的图片,可以<<使用懒加载的方式创建,并在视图临时展示完成时,及时地释放掉>>.

      使用 self.view(控制器视图) 来 addsubview (添加)一个子视图时,会对该视图添加一个强引用,如果对当前控制器继续使用 strong 拥有此子视图, 只有当前控制器销毁时,才会释放当前子视图.....

      (PS:如果想尽快释放当前子视图,就可以使用 weak 属性拥有此子视图,在调用了removeFromSuperview方法后,即可销毁)

     6.使用 NSTimer 播放多张图片,性能比 UIImageView 的 animationImages 播放强多了

     

     7.逻辑比较复杂的问题

      <1> 可以通过在重要位置插入日志的方法,查看逻辑.

      <2> ① 比如我在 控制器 中设置 view 的_isFullscreen属性,目测没有效果....

         ② 然后在 view 中的用到该属性的地方打印其内容,发现该属性的值根本没有变化....

         ③ 检测发现,该属性的值是通过该 view 的 管理类 赋值的,而该 管理类 的 _isFullscreen属性是通过 控制器 赋值的

         ④因此直接在 控制器管理类 赋值就行.

    8.定时器的刷新和强制刷新冲突 

      <1> 强制刷新表格时,可以检测定时刷新的定时器是否存在,若存在就不强制刷新,不存在才强制刷新.

    9.APP首页图片下载慢怎么处理???

      <1> 第一次只读取配置文件,并下载配置文件中的图片路径,并保存到本地的偏好设置中,第二次打开时读取到了就显示(sd 检测到有缓存图片了,就不会再请求了)

      <2> 要是图片名称没变,但图片内容改变了,可以在配置文件中加一个变量,判断是否清除 sd 下载的那个路径的缓存图片.

      <3> 不禁想起了成林的面试过程,即使没遇到过的问题,也要从自己做过的东西中找到相同点,总比不知道好,这样才能更自信,更好地进步.

    10.接口设计问题

      <1> 不要通过一个字段的内容是否有无,来确定某个 UI 是否显示......应该通过枚举类型的字段来确定,这样比较安全.

  • 相关阅读:
    Promise关键知识
    CSS实现简易的轮播图
    绝对定位和相对定位的一些特性
    行内元素及其浮动
    webpack实践总结
    less语法详解
    js模拟事件
    jquery各种事件绑定的区别
    前端路由实现的关键知识点
    js鼠标事件相关知识
  • 原文地址:https://www.cnblogs.com/lz465350/p/6429654.html
Copyright © 2020-2023  润新知