// 闲来无聊测试一下

第一轮:

1、numberOfSectionsInTableView    :假如section=2,此函数只执行一次,假如section=0,下面函数不执行,默认为1

2、heightForHeaderInSection  ,执行两次,此函数执行次数为section数目

3、heightForFooterInSection  ,函数属性同上,执行两次

4、numberOfRowsInSection    ,此方法执行一次

5、heightForHeaderInSection     ,此方法执行了两次,我其实有点困惑为什么这里还要调用这个方法

6、heightForFooterInSection   ,此方法执行两次,

7、numberOfRowsInSection,执行一次

8、heightForRowAtIndexPath  ,行高,先执行section=0,对应的row次数

第二轮:

1、numberOfSectionsInTableView ,一次

2、heightForHeaderInSection  ,section次数

3、heightForFooterInSection    ,section次数

4、numberOfRowsInSection    ,一次

5、heightForHeaderInSection  ,执行section次数

6、heightForFooterInSection,执行section次数

7、numberOfRowsInSection,执行一次

8、heightForRowAtIndexPath,行高,先执行一次

9、cellForRowAtIndexPath

10、willDisplayCell

然后8、9、10依次执行直到所有的cell被描画完毕

位移枚举

  • 位移枚举是非常古老的 C 语言技巧
  • 按位与 如果都是 1 结果就是1
  • 按位或 如果都是 0 结果就是0

演练

1  定义枚举类型

/// 操作类型枚举

typedef enum {

ActionTypeTop       = 1 << 0,

ActionTypeBottom    = 1 << 1,

ActionTypeLeft      = 1 << 2,

ActionTypeRight     = 1 << 3

} ActionType;

  • 方法目标

根据操作类型参数,做出不同的响应

操作类型可以任意组合

  • 方法实现

- (void)action:(ActionType)type {

if (type == 0) {

NSLog(@"无操作");

return;

}

if (type & ActionTypeTop) {

NSLog(@"Top %tu", type & ActionTypeTop);

}

if (type & ActionTypeBottom) {

NSLog(@"Bottom %tu", type & ActionTypeBottom);

}

if (type & ActionTypeLeft) {

NSLog(@"Left %tu", type & ActionTypeLeft);

}

if (type & ActionTypeRight) {

NSLog(@"Right %tu", type & ActionTypeRight);

}

}

  • 方法调用

ActionType type = ActionTypeTop | ActionTypeRight;

[self action:type];

代码小结

  • 使用 按位或 可以给一个参数同时设置多个 类型
  • 在具体执行时,使用 按位与 可以判断具体的 类型
  • 通过位移设置,就能够得到非常多的组合!
  • 对于位移枚举类型,如果传入 0,表示什么附加操作都不做,通常执行效率是最高的
  • 如果开发中,看到位移的枚举,同时不要做任何的附加操作,参数可以直接输入 0!

iOS 特有语法

  • iOS 5.0之后,提供了新的枚举定义方式
  • 定义枚举的同时,指定枚举中数据的类型
  • typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions)

位移枚举,可以使用 按位或 设置数值

  • typedef NS_ENUM(NSInteger, UITableViewStyle)

数字枚举,直接使用枚举设置数值

typedef NS_OPTIONS(NSUInteger, ActionType) {

ActionTypeTop       = 1 << 0,

ActionTypeBottom    = 1 << 1,

ActionTypeLeft      = 1 << 2,

ActionTypeRight     = 1 << 3

};

TableView的执行流程 & 位移枚举的更多相关文章

  1. 追源索骥:透过源码看懂Flink核心框架的执行流程

    li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt, ...

  2. springMvc的执行流程(源码分析)

    1.在springMvc中负责处理请求的类为DispatcherServlet,这个类与我们传统的Servlet是一样的.我们来看看它的继承图 2. 我们发现DispatcherServlet也继承了 ...

  3. 透过源码看懂Flink核心框架的执行流程

    前言 Flink是大数据处理领域最近很火的一个开源的分布式.高性能的流式处理框架,其对数据的处理可以达到毫秒级别.本文以一个来自官网的WordCount例子为引,全面阐述flink的核心架构及执行流程 ...

  4. Mybatis执行流程学习之手写mybatis雏形

    Mybatis是目前开发中最常用的一款基于ORM思想的半自动持久层框架,平时我们都仅仅停留在使用阶段,对mybatis是怎样运行的并不清楚,今天抽空找到一些资料自学了一波,自己写了一个mybatis的 ...

  5. 【阅读SpringMVC源码】手把手带你debug验证SpringMVC执行流程

    ✿ 阅读源码思路: 先跳过非重点,深入每个方法,进入的时候可以把整个可以理一下方法的执行步骤理一下,也可以,理到某一步,继续深入,回来后,接着理清除下面的步骤. ✿ 阅读本文的准备工作,预习一下Spr ...

  6. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...

  7. 第二天 ci执行流程

    第二天 ci执行流程 welcome 页面 this this->load 单入口框架index.php 两个文件夹 system application定义 定义常亮路径 载入 codeign ...

  8. 轻量级前端MVVM框架avalon - 执行流程2

    接上一章 执行流程1 在这一大堆扫描绑定方法中应该会哪些实现? 首先我们看avalon能帮你做什么? 数据填充,比如表单的一些初始值,切换卡的各个面板的内容({{xxx}},{{xxx|html}}, ...

  9. [Java编程思想-学习笔记]第4章 控制执行流程

    4.1  return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: char test(int score) { if ...

随机推荐

  1. 源代码管理工具(上)-SVN基本使用

    ------------------------------------------------------SVN简介和搭建 ------------------------------------- ...

  2. 深入了解asp.net框架。生命周期以及事件处理机制

    刚接触asp.net框架觉得很好奇.他的快速开发是怎么实现的.控件的状态又是怎么保持的.我们都知道http是无状态的.而且网上很多人都说使用asp.net框架使用服务器框架是非常慢的. 带着这些疑问我 ...

  3. namespace std

    c++中使用namespace来防止命名冲突(重命名),我们经常使用的一些函数和变量都被放在一个叫std的namespace中,如标准I/O流操作,vector等等.我们在每一个文件中都可使用std中 ...

  4. 关于Android程序设计—有道词典demo转移至coding的公告

    有道词典的demo以及解析已转移至Coding https://coding.net/u/monsterLin/p/WebView_YouDao/git

  5. Bzoj1189 [HNOI2007]紧急疏散evacuate

    1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2293  Solved: 715 Descr ...

  6. ecshop /includes/lib_base.php、/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php Backdoor Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECShop是国内一款流行的网店管理系统软件,其2.7.3版本某个补丁存 ...

  7. shell !符号

    执行某历史命令 history找出历史命令id号 ! id

  8. C语言实现penna模型

    一年前写的代码,偶然翻出来.发现自己当时水平还不赖吗. # include <stdio.h> # include <stdlib.h> # include <time. ...

  9. MyBatis详解 与配置MyBatis+Spring+MySql

    MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本 ...

  10. PhpStorm 默认快捷键

    ctrl+j            插入活动代码提示ctrl+alt+t        当前位置插入环绕代码alt+insert        生成代码菜单Shift + Enter 新一行ctrl+ ...