2021年4月7日
摘要:block的本质 1. 的基本用法 2.将 代码转换成 后发现,生成了一个 类型的结构体, 是指向这个结构体的指针 3. 类型的结构体,里面包含了 类型的结构体变量 和`__main_block_desc_0 Desc __main_block_impl_0`类型的构造函数,还会生成一个age来存储 阅读全文
posted @ 2021-04-07 02:42 FunkyRay 阅读(71) 评论(0) 推荐(0) 编辑
  2021年4月6日
摘要:Category的本质 Category的底层结构 1.我们先给 增加一个 的分类 2.然后通过 转换成 ,发现内部会生成一个 类型的结构体 3.我们还发现会生成一个 结构体类型的变量,这个变量对应着该分类文件是 ,并且里面记录着所有的分类信息 4. 这个变量里面记录着分类的对象方法 和`eat1` 阅读全文
posted @ 2021-04-06 09:31 FunkyRay 阅读(69) 评论(0) 推荐(0) 编辑
摘要:KVO 的全称是 Key Value Observing ,俗称“键值监听”,可以用于监听某个对象属性值的改变 KVO的使用 可以通过 方法对属性发起监听,然后通过 方法中对应进行监听,见下面示例代码 注意: 监听的对象销毁之前要移除该监听 KVO的实现本质 1.通过上面示例代码发现,函数在调用 方 阅读全文
posted @ 2021-04-06 09:29 FunkyRay 阅读(95) 评论(0) 推荐(0) 编辑
摘要:我们平时编写的Objective C代码,底层实现其实都是 C\C++代码 ,所以Objective C的面向对象都是基于C\C++的数据结构实现的 OC对象的本质 Objective C的对象、类主要是基于 C\C++的结构体 实现的 通过下面的命令可以将OC代码转换为C++代码来查看 由于Cla 阅读全文
posted @ 2021-04-06 09:28 FunkyRay 阅读(118) 评论(0) 推荐(0) 编辑
  2021年4月5日
摘要:栈(Stack) 栈是一种特殊的线性表,只能在一端进行操作 往栈中添加元素的操作,一般叫做 ,入栈 从栈中移除元素的操作,一般叫做 ,出栈(只能移除栈顶元素,也叫做弹出栈顶元素) 后进先出的原则, 这里说的栈和 是两个不同的概念 栈的接口设计 下面我们就来自己设计一个栈的接口 栈的结构我们可以使用之 阅读全文
posted @ 2021-04-05 11:58 FunkyRay 阅读(63) 评论(0) 推荐(0) 编辑
  2021年4月4日
摘要:单向循环链表 单向循环链表的尾节点会指向首节点形成循环 单向循环链表的设计 2.删除元素时,也是需要考虑首节点的问题 如果链表只有一个元素,那么删除该节点就直接让 指向 就可以了 如果链表中不止一个元素,那么删除首节点后需要将尾节点的 指向新的首节点 双向循环链表 双向循环链表的首节点的 指向的是尾 阅读全文
posted @ 2021-04-04 10:28 FunkyRay 阅读(45) 评论(0) 推荐(0) 编辑
摘要:链表(Linked List) 单链表 上篇文章我们设计了一个动态数组,但发现动态数组有个明显的缺点:如果存储不满的话,可能会造成内存空间的大量浪费 怎样才能做到用多少就申请多少呢? 链表就可以做到这一点 链表是一种 的线性表,所有元素的内存地址不一定是连续的 单链表的设计 下面我们就来设计一个链表 阅读全文
posted @ 2021-04-04 10:27 FunkyRay 阅读(38) 评论(0) 推荐(0) 编辑
  2021年4月2日
摘要:什么是数据结构? 数据结构是计算机存储、组织数据的方式 在实际应用中,根据使用场景来选择最合适的数据结构 线性表 线性表是具有n个相同类型元素的有限序列(n ≥ 0) a1是首节点(首元素),an是尾结点(尾元素) a1是a2的前驱,a2是a1的后驱 常见的线性表有 数组(Array) 数组是一种顺 阅读全文
posted @ 2021-04-02 02:02 FunkyRay 阅读(72) 评论(0) 推荐(0) 编辑
  2021年4月1日
摘要:什么是算法 算法是用于解决特定问题的一系列的执行步骤 看下面两段代码,都属于算法 public static void test1(int n) { if (n 10) { System.out.println("n 10"); } else if (n 5) { // 2 System.out.p 阅读全文
posted @ 2021-04-01 15:02 FunkyRay 阅读(44) 评论(0) 推荐(0) 编辑
摘要:我们通过分析 来更近一步了解Swift的语法 Array相关 map、filter 的源码路径: flatMap、compactMap、reduce 的源码路径: map filter compactMap reduce Substring相关 Substring 的源码路径: 初始化 append 阅读全文
posted @ 2021-04-01 11:46 FunkyRay 阅读(66) 评论(0) 推荐(0) 编辑