12 2020 档案

061:WebViewJavascriptBridge交互原理
摘要:WebViewJavascriptBridge源码分析 WebViewJavascriptBridge 结合源码原理分析 ios WebViewJavascriptBridge源码解析 iOS源码补完计划-WebViewJavascriptBridge实现原理 WebViewJavascriptBr 阅读全文

posted @ 2020-12-29 00:43 风zk 阅读(192) 评论(0) 推荐(1)

060:URLScheme和Universal Links
摘要:Universal Links (iOS 9) 1:iOS 10 Universal Links(通用连接),从微信网页连接跳转到公司APP之实现流程详解--2016最新版 2:iOS 通用链接(Universal Link)唤起app的实现方法 3:iOS Universal links教程 UR 阅读全文

posted @ 2020-12-29 00:00 风zk 阅读(134) 评论(0) 推荐(0)

059:单元测试
摘要:OS 单元测试简单讲解 单元测试的特点 用代码来测试代码 红灯/绿灯迭代开发 在日常开发中, 数据大部分来自网络, 很难出现'边界数据', 如果不测试所有条件就上架, APP就容易发生闪退 自己建立测试用例 单元测试不是靠NSLog来进行测试的, 是使用'断言'来测试的, 提前设置的条件必须满足才能 阅读全文

posted @ 2020-12-28 23:06 风zk 阅读(109) 评论(0) 推荐(0)

057*:应用程序的生命周期
摘要:一:iOS应用程序生命周期(前后台切换,应用的各种状态)详解 iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使 阅读全文

posted @ 2020-12-28 19:28 风zk 阅读(216) 评论(0) 推荐(0)

056*: iOS 容错处理机制
摘要:app开发过程中,我们可能遇到很多崩溃,都可以根据崩溃日志进行修复,但很多时候,一些不确定数据(服务端数据)可能会导致一些意外的崩溃,但对于一个好的应用来说,崩溃率是有严格限制的,因此,很多时候需要预防一些常见崩溃 一:越界判断: 1:数组越界,可以通过对数组进行类目扩展,在类目中,对数组进行判断, 阅读全文

posted @ 2020-12-28 13:00 风zk 阅读(159) 评论(0) 推荐(0)

055*: (load、initialize)(UIView和CALayer)(@synthesize 和 @dynamic)(layoutIfNeeded和setNeedsLayout)(include import @class)(id和NSObject ,instancetype)(NSNumber)
摘要:(load、initialize) (UIView和CALayer)、 (@synthesize 和 @dynamic) (layoutIfNeeded和setNeedsLayout) (include import @class) (id和NSObject ,instancetype) 一:loa 阅读全文

posted @ 2020-12-28 12:53 风zk 阅读(210) 评论(0) 推荐(0)

053*:bitMap
摘要:一:bitMap: 所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 如果说了这么多还没明白什么是Bit-map,那么我们来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5 阅读全文

posted @ 2020-12-28 11:17 风zk 阅读(135) 评论(0) 推荐(0)

052*:CocoaPods的原理和组件化实现
摘要:问题: 目录: 1:HomeBrew 2:RVM 3:Ruby 4:CocoaPods 前言: Cocoapods安装顺序 Xcode->HomeBrew->RVM->Ruby->Cocoapods; 正文: 一:安装HomeBrew 1:HomeBrew简介 Homebrew:Homebrew 是 阅读全文

posted @ 2020-12-28 00:01 风zk 阅读(335) 评论(0) 推荐(0)

051*:dSYM你是如何分析的?
摘要:1:dSYM命令: atos符号化: 2:工具 dSYMTools 3:友盟官网 4:利用NSSetUncaughtExceptionHandler处理 捕获异常。邮件发送。 引用: 1:iOS 用dSYM工具分析友盟崩溃日志 —— 详细步骤 2:iOS崩溃日志分析__dSYM解析 3:【iOS】a 阅读全文

posted @ 2020-12-27 23:45 风zk 阅读(211) 评论(0) 推荐(0)

050*:AppDelegate如何瘦身?
摘要:1:AppDelegate分类(Category) 2:钩子函数:交换方法(不建议使用) 3:通过单例给AppDelegate瘦身 4:FRDModuleManager 优点: 简单,只需要几行代码就可以解决。 被添加的每个模块都可以“享受”AppDelegate的各个生命周期。 缺点: 每个模块都 阅读全文

posted @ 2020-12-27 23:04 风zk 阅读(262) 评论(0) 推荐(0)

047*:方法签名有什么作用?事务?索引?多态?Images.xcassets?图片大小计算?影响因素?isEqual和hash方法?
摘要:一:方法签名 计算机程序包括许多使人工任务自动化的算法。这些程序被分成小的模块化组件,这些组件被称为方法和函数。每个方法都有一个特定的格式来描述它在程序中的作用。方法签名是方法的形式定义,它提供了对该功能的高级描述。在计算机操作在软件开发中使用了许多计算机语言。 每种语言都有创建方法签名所需的特定格 阅读全文

posted @ 2020-12-27 21:59 风zk 阅读(210) 评论(0) 推荐(0)

046*:证书过期怎么办?
摘要:一、开发和发布证书作用 1、类似上边证书样式的就是Certificates(证书,包括开发、发布证书),作用 : 这.cer文件格式的证书是让开发者使用的设备(也就是你的Mac)有真机调试,发布APP的权限。 2、类似上边证书样式的就是Provisioning Profiles(描述文件,简称PP) 阅读全文

posted @ 2020-12-27 21:34 风zk 阅读(1294) 评论(0) 推荐(0)

045*:ipa包的大小受哪些影响?app瘦身
摘要:一:资源优化 1:删除无用的资源文件 在这里推荐使用工具LSUnusedResources。它在脚本的基础上,做了两个改进: 提高匹配速度。LSUnusedResources不是对每个资源文件名都做一次全文搜索匹配,因为加入项目的资源太多,这里会导致性能快速下降。它只是针对源码、Xib、Storyb 阅读全文

posted @ 2020-12-27 20:54 风zk 阅读(470) 评论(0) 推荐(0)

041*:(反射是什么?可以举出几个应用场景么?)(切面aop编程)(App 无痕埋点的思路了解么?你认为理想的无痕埋点系统应该具备哪些特点?)
摘要:1:反射是什么?可以举出几个应用场景么? 1:了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法。当然,本篇文章中讲到的反射方法,就在NSObject和Foundation框架中。 // 在实 阅读全文

posted @ 2020-12-27 15:01 风zk 阅读(255) 评论(0) 推荐(0)

0000*:OC面试汇总
摘要:1:MVC和MVVM的区别?MVVM和MVP的区。如何双重绑定. set方法修改ViewModel属性,ViewModel中KVO监听,做出数据请求,之后block传到View。 2:AFNetworking的底层原理。 3:SDWebimage,SDWebImage 下载了图片后为什么要解码? 4 阅读全文

posted @ 2020-12-27 07:47 风zk 阅读(260) 评论(0) 推荐(0)

039*:UIViewController生命周期,在init方法里面,设置背景颜色,会生效吗?
摘要:问题 在init方法里面,设置背景颜色,会生效吗? 不会,因为view还没显示出来。 目录 预备 // // ViewController.m // UIControllerLifeCicle // // Created by 帝炎魔 on 16/5/5. // Copyright © 2016年 阅读全文

posted @ 2020-12-26 02:10 风zk 阅读(546) 评论(0) 推荐(0)

036*:AFNetwork源码分析
摘要:1:文件 2:函数调用栈 3:简单介绍 4:AFHTTPSessionManager 介绍 1: AFHTTPSessionManager是继承AFURLSessionManager 2:AFHTTPSessionManager: 发起网络请求(例如GET); 3:AFHTTPSessionMana 阅读全文

posted @ 2020-12-26 00:38 风zk 阅读(202) 评论(0) 推荐(0)

25*:排序算法:总结 (1、冒泡排序:2:选择排序:3、插入排序:4、希尔排序:5、堆排序:6、归并排序:7、快速排序:)
摘要:问题 目录 1、冒泡排序:未排序区间两两交换找到最大值,排在最后,形成有序区间。稳定 2:选择排序:从未排序区间找最小元素,和排序区间的最后一个元素交换位置。 3、插入排序:从未排序区间依次取出元素插入到排序区间的适当位置。稳定 4、希尔排序:缩小增量排序 5、堆排序:完全二叉树大堆顶,交互堆顶和最 阅读全文

posted @ 2020-12-16 20:18 风zk 阅读(290) 评论(0) 推荐(0)

24*:排序算法7:快速排序(分区值,分而治之)
摘要:问题 目录 预备 快排利用了分治的思想,分而治之,分治算法的基本思想是将一个规模为N的问题,分解成K个规模较小的子问题,这些子问题相互独立且问题性质相同。 求解出子问题的解,合并得到原问题的解。拆分问题总不可能手脚并用一个个拆分,因此分治算法大多采用递归实现。 正文 快速排序 1:算法描述 对A[p 阅读全文

posted @ 2020-12-16 19:07 风zk 阅读(354) 评论(0) 推荐(0)

23*:排序算法6:归并排序(两两分而治之。稳定)
摘要:问题 目录 预备 冒泡,选择和插入排序,它们的时间复杂度都是O(n2),比较高,适合小规模数据的排序;希尔排序和快速排序都不稳定,这篇我们来说说稳定的归并排序。归并排序在数据量大且数据递增或递减连续性好的情况下,效率比较高,且是O(nlogn)复杂度下唯一一个稳定的排序,致命缺点就是空间复杂度O(n 阅读全文

posted @ 2020-12-16 19:05 风zk 阅读(858) 评论(0) 推荐(0)

22*:排序算法5:堆排序(完全二叉树大堆顶,交互堆顶和最后元素,找到最大元素。递归依次排序。)
摘要:问题 目录 预备 正文 一:什么是堆? 1:定义 堆(英语:Heap)是计算机科学中的一种特别的完全二叉树,满足特性"给定堆中任意节点P和C,若P是C的母节点,那么P的值会小于等于(或大于等于)C的值"。 摘自维基百科。 首先堆是一个完全二叉树(除了最后一层,其他层的节点个数都是满的,最后一层的节点 阅读全文

posted @ 2020-12-16 17:57 风zk 阅读(308) 评论(0) 推荐(0)

21*:排序算法4:希尔排序(缩小增量排序)
摘要:问题 //起始间隔值gap设置为总数的一半,直到gap==1结束 -(void)shellSort:(NSMutableArray *)list{ int gap = (int)list.count / 2; while (gap >= 1) { for(int i = gap ; i < [lis 阅读全文

posted @ 2020-12-16 16:49 风zk 阅读(230) 评论(0) 推荐(0)

20*:排序算法3:插入排序(从未排序区间依次取出元素插入到排序区间的适当位置。稳定)
摘要:问题 -(void)insertSequence:(NSMutableArray *)arr { for (int i = 1; i<arr.count; i++) { int a=[arr[i] intValue]; int k = i; while (k>0&&[arr[k] intValue] 阅读全文

posted @ 2020-12-16 16:23 风zk 阅读(179) 评论(0) 推荐(0)

19*:排序算法2:选择排序(从未排序区间找最小元素,和排序区间的最后一个元素交换位置。)
摘要:问题 - (void)selectionAscendingOrderSortWithArray:(NSMutableArray *)ascendingArr { int index = 0;//记录找到的关键字下标 for (int i = 0; i < arr.count - 1; i++) { 阅读全文

posted @ 2020-12-12 20:19 风zk 阅读(253) 评论(0) 推荐(0)

18*:排序算法1:冒泡和优化(未排序区间两两交换找到最大值,排在最后,形成有序区间。稳定)
摘要:问题 -(void)bubbleSequence:(NSMutableArray *)arr {//优化后算法-从第一个开始排序,空间复杂度相对更大一点 for (int i = 0; i < arr.count; ++i) { bool flag=false; //遍历数组的每一个`索引`(不包括 阅读全文

posted @ 2020-12-12 20:18 风zk 阅读(199) 评论(0) 推荐(0)

17*:查找专题之平衡二叉树以及散列查找技术
摘要:问题 平衡二叉树 散列查找技术 目录 平衡二叉树 散列查找技术 预备 正文 一:平衡二叉树 1:定义 平衡⼆叉树 平衡⼆叉树(Self-Balancing Binary Search Tree或Height-Balanced Binary Search Tree),是⼀ 种二叉排序树.其中每一个结点 阅读全文

posted @ 2020-12-12 20:17 风zk 阅读(302) 评论(0) 推荐(0)

16*:查找专题静态查找以及二叉搜索树的实现:(顺序查找、折半查找、插值查找、斐波那契查找)、(二叉排序树)
摘要:问题 (顺序查找、折半查找、插值查找、斐波那契查找)、(二叉排序树) 目录 1:定义 2:顺序查找、折半查找、插值查找、斐波那契查找 3:二叉排序树 预备 正文 一:定义 查找(Searching) 就是根据给定的某个值,在査找表中确定一个其关键字等于给定值的数据元素 查找表(Search Tabl 阅读全文

posted @ 2020-12-12 20:16 风zk 阅读(325) 评论(0) 推荐(0)

15*:图的应用(拓扑排序和关键路径问题)(1:拓扑排序 2:关键路径 )
摘要:问题 目录 1:拓扑排序 2:关键路径 预备 正文 1:拓扑排序介绍 我们会把施工过程、生产流程、软件开发、教学安排等都当成一个项目工程来对待,所有的工程都可分为若干个“活动”的子工程。例如下图一张简陋的电影制作流程图,现实中可能并不完全相同,但基本表达了一个工程和若干个活动的概念。在这些活动之间, 阅读全文

posted @ 2020-12-12 20:14 风zk 阅读(495) 评论(0) 推荐(0)

06:深入揭秘HTTPS安全问题&连接建立全过程
摘要:深入揭秘HTTPS安全问题&连接建立全过程 阅读全文

posted @ 2020-12-10 23:02 风zk 阅读(104) 评论(0) 推荐(0)

23*:Flutter之原生嵌套Flutter
摘要:问题 目录 预备 正文 原有iOS工程嵌入Flutter混合开发基本操作 1:在桌面上创建文件夹iOSFlutter,然后里面创建三个平级的文件夹,我是如下命名的. 2:打开命令行工具,进入到flutter_module目录下: 3:创建Flutter之module,模块; 组件; 单元 然后执行如 阅读全文

posted @ 2020-12-10 21:30 风zk 阅读(629) 评论(0) 推荐(0)

22*:Flutter之原生和Flutter交互
摘要:问题 目录 预备 正文 flutter MyApp界面里1、flutter点击事件之后 iOS跳转界面2、flutter传map类型参数给iOS进行相应交互3、在flutter界面的事件响应之后,iOS返回响应数据给flutter iOS代码如下: // // ViewController.m // 阅读全文

posted @ 2020-12-10 21:29 风zk 阅读(690) 评论(0) 推荐(0)

21*:Flutter之Key:ValueKey、ObjectKey、UniqueKey、GlobalKey
摘要:问题 目录 预备 正文 1:Key 是什么? 用官方的说法就是: key是用来作为Widget、Element和SemanticsNode的标示,仅仅用来更新widget->key相同的小部件的状态。 Key子类包含LocalKey和GlobalKey。 2:LocalKey 看下LocalKey的 阅读全文

posted @ 2020-12-10 21:28 风zk 阅读(2718) 评论(0) 推荐(1)

20*:Flutter之生命周期
摘要:问题 目录 预备 正文 1:生命周期的基本概念: 1、什么是生命周期? 说白了就是回调方法(函数) 让你知道我封装好的这个widget它处于什么状态了! 2、生命周期有什么作用? 监听widget的事件 初始化数据(* 创建数据; *发送网络请求) 内存管理* 销毁数据、销毁监听者* 销毁Timer 阅读全文

posted @ 2020-12-10 01:57 风zk 阅读(218) 评论(0) 推荐(0)

19:Flutter之状态管理(数据共享)
摘要:问题 目录 预备 正文 1 注意 1 引用 1:Flutter 状态管理(数据共享) 2:Flutter实战 阅读全文

posted @ 2020-12-10 01:43 风zk 阅读(163) 评论(0) 推荐(0)

18:Flutter之pageView
摘要:问题 目录 预备 正文 1 注意 1 引用 1: 2: 3: 4: 5: 阅读全文

posted @ 2020-12-10 01:42 风zk 阅读(98) 评论(0) 推荐(0)

17*:Flutter之常见库
摘要:问题 目录 1:Toast 2:图片加载缓存cached_network_image 3:添加WebView加载网页 4:刷新加载库 flutter_easyrefresh 5:自动轮播控件flutter_swiper 6:视频播放器videoPlayer 7:网络请求库dio 预备 正文 1:To 阅读全文

posted @ 2020-12-10 01:20 风zk 阅读(256) 评论(0) 推荐(0)

00总结
摘要:基本汇总 Flutter: 1:Henry________ 阅读全文

posted @ 2020-12-10 00:07 风zk 阅读(60) 评论(0) 推荐(0)

16:OpenGL ES 滤镜-分屏滤镜
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:49 风zk 阅读(87) 评论(0) 推荐(0)

18:OpenGL ES 滤镜动效篇
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:48 风zk 阅读(119) 评论(0) 推荐(0)

17:OpenGL ES 滤镜进阶篇
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:47 风zk 阅读(94) 评论(0) 推荐(0)

19:OpenGL ES 大长腿功能实现
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:46 风zk 阅读(88) 评论(0) 推荐(0)

20:GPUImage 探索
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:44 风zk 阅读(54) 评论(0) 推荐(0)

22:Metal Shading Language
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:42 风zk 阅读(58) 评论(0) 推荐(0)

23:Metal 进阶探索
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:41 风zk 阅读(61) 评论(0) 推荐(0)

15:OpenGL ES 进阶篇自定义粒子系统下
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:40 风zk 阅读(59) 评论(0) 推荐(0)

25:SpritKit 小游戏 [快乐的 Ending]
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:39 风zk 阅读(67) 评论(0) 推荐(0)

24:Metal 视频渲染
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:37 风zk 阅读(78) 评论(0) 推荐(0)

21:Metal 初探
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:35 风zk 阅读(63) 评论(0) 推荐(0)

14:OpenGL ES 进阶篇自定义粒子系统上
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:29 风zk 阅读(101) 评论(0) 推荐(0)

13:OpenGL ES 综合练习篇
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:27 风zk 阅读(88) 评论(0) 推荐(0)

12:OpenGL ES GLSL 纹理加载
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:26 风zk 阅读(71) 评论(0) 推荐(0)

11:OpenGL ES_GLSL 篇章
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:25 风zk 阅读(44) 评论(0) 推荐(0)

10:OpenGL ES 初探_GLKit
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:23 风zk 阅读(59) 评论(0) 推荐(0)

09:3D 数学
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:21 风zk 阅读(80) 评论(0) 推荐(0)

08节:OpenGL 专题-纹理
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:19 风zk 阅读(43) 评论(0) 推荐(0)

07:OpenGL 基础部分综合案例篇
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:18 风zk 阅读(54) 评论(0) 推荐(0)

06:向量与矩阵应用场景与相关方法介绍
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:17 风zk 阅读(120) 评论(0) 推荐(0)

05:OpenGL下的渲染技巧(下)
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:16 风zk 阅读(64) 评论(0) 推荐(0)

04:OpenGL下的渲染技巧
摘要:问题 目录 预备 正文 注意 引用 1: 2: 3: 4: 5: 6: 7: 8: 阅读全文

posted @ 2020-12-07 01:15 风zk 阅读(74) 评论(0) 推荐(0)

00*:算法目录
摘要:逻辑教育_优秀学员作业(博客) 小魔女阿甘 https://juejin.cn/user/114004941868264/posts 1: 李林竹 https://www.yuque.com/lilinzhu/mauona 2: joker_kinG https://juejin.cn/user/3 阅读全文

posted @ 2020-12-07 01:06 风zk 阅读(5596) 评论(0) 推荐(0)

00*:Flutter目录
摘要:1:16节课: 6+6+4(3天课时) 2:算法: 5+5+5(3天课时) Flutter链接 1:马志武的博客 2:Mr丶xi先森 3:奔跑吧李博 4:fgyong的开发:https://juejin.cn/user/1750078239290909/posts 5:Flutter实战 1:Flu 阅读全文

posted @ 2020-12-06 23:46 风zk 阅读(373) 评论(0) 推荐(0)

033*:strong和weak,(strong=retain+release)weak(self指针地址和weakSelf地址不一样、 weakSelf没有对引用计数+1)
摘要:问题 1: weak表其实是一个哈希表,key是所指对象的指针,value是weak指针的地址数组。(value是数组的原因是:因为一个对象可能被多个弱引用指针指向) Runtime维护了一张weak表,用来存储某个对象的所有的weak指针。 2: 当前self取地址 和 weakSelf取地址的值 阅读全文

posted @ 2020-12-05 18:19 风zk 阅读(94) 评论(0) 推荐(0)

14*:图的应用(最短路径问题):(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)
摘要:问题 迪杰斯特拉(Dijkstra)算法 /*用于存储最短路径下标的数组*/ typedef int Patharc[MAXVEX]; /*用于存储到各点最短路径权值的和*/ typedef int ShortPathTable[MAXVEX]; 弗洛伊德(Floyd)算法 //Patharc 父节 阅读全文

posted @ 2020-12-05 11:49 风zk 阅读(540) 评论(0) 推荐(0)

13*:图的应用:最小生成树普里姆(Prim)算法、克鲁斯卡尔(Kruskal)算法:(通图生成树、设计一个最小成本的⽹网络布线路线、最小生成树普里姆(Prim)算法、克鲁斯卡尔(Kruskal)算法)
摘要:问题 1:普里姆(Prim)算法 typedef struct { int arc[MAXVEX][MAXVEX]; int numVertexes, numEdges; }MGraph; 2:克鲁斯卡尔(Kruskal)算法 typedef struct { int arc[MAXVEX][MAX 阅读全文

posted @ 2020-12-05 11:48 风zk 阅读(443) 评论(0) 推荐(0)

12*:图结构初探:(邻接矩阵顺序存储、邻接表链式存储)(邻接矩阵和邻接表以及深度与广度优先遍历)
摘要:问题 目录 1:图 2:邻接矩阵顺序存储、 3:邻接表链式存储 4:邻接矩阵和邻接表、及深度与广度优先遍历 预备 正文 一:图 1:图的简介 图(Graph)结构是一种非线性的数据结构,图在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。 阅读全文

posted @ 2020-12-05 11:47 风zk 阅读(490) 评论(0) 推荐(0)

11*:线索化二叉树和⼆叉树的应⽤-哈夫曼编码(线索二叉树,等于是把一棵二叉树转变成了一个双向链表)(线索化二叉树利用二叉树的空链指针,使每个结点都有了唯一前驱和后继,把非线性结构转换为线性结构。)
摘要:问题 1:线索化二叉树 /* 线索二叉树存储结点结构*/ typedef struct BiThrNode{ //数据 CElemType data; //左右孩子指针 struct BiThrNode *lchild,*rchild; //左右标记 PointerTag LTag; Pointer 阅读全文

posted @ 2020-12-05 11:46 风zk 阅读(595) 评论(0) 推荐(0)

10*:二叉树初探:(定义、二叉树、二叉树的4种遍历方法)(二叉数顺序存储、二叉数链式存储)
摘要:问题 目录 1:树(定义、二叉树、二叉树的4种遍历方法) 2:二叉数顺序存储 3:二叉数链式存储 预备 正文 一:树 树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。 1:定义 树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根( 阅读全文

posted @ 2020-12-05 11:45 风zk 阅读(440) 评论(0) 推荐(0)

09*:字符串匹配算法KMP算法:(主要是需要理解KMP中next数组求解的必要性以及j 的回溯依据;)(回溯j 值的多少取决于当前字符之前的串前后缀相似度;)
摘要:问题 目录 1:什么是KMP 2:KMP算法原理 预备 正文 1:什么是KMP KMP算法是在字符串匹配算法中比较绕的.主要是需要理解KMP中next数组求解的必要性以及j 的回溯依据; KMP 算法 是由 D.E.Knuth,J.H.Mores 和 VR.Pratt共同发表模式匹配算法,称之克鲁特 阅读全文

posted @ 2020-12-05 11:44 风zk 阅读(515) 评论(0) 推荐(0)

08*:字符串匹配算法:BF算法与RK算法(RK算法主要的解决思路就是在BF算法的基础上,将子串转换成哈希值来进行比较,它算是BF算法的升级版。)
摘要:问题 字符串匹配问题: 给你⼀个仅包含⼩写字⺟的字符串主串S = "abcacabdc",和模式串T = "abd", 请查找出模式串在主串第 ⼀次出现的位置; 提示: 主串和模式串均为⼩写字⺟且都是合法输⼊。 目录 1:BF算法-暴风匹配算法 2:RK算法 3:去除重复字母 预备 正文 1:BF算 阅读全文

posted @ 2020-12-05 11:43 风zk 阅读(599) 评论(0) 推荐(0)

07:栈思想下相关算法题解析
摘要:问题 目录 预备 正文 1 注意 1 引用 1: 2: 3: 4: 5: 阅读全文

posted @ 2020-12-05 11:42 风zk 阅读(62) 评论(0) 推荐(0)

06*:队列结构的顺序与链式存储实现(1:队列、 2: 循环队列顺序队列 、3:链式队列)
摘要:问题 目录 1:队列 2:循环队列顺序队列 3:链式队列 预备 正文 一:队列 1:队列: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队 阅读全文

posted @ 2020-12-05 11:41 风zk 阅读(1044) 评论(0) 推荐(0)

05*:栈结构的顺序以及链式存储实现(1:栈 2:顺序栈 3:链式栈 4:递归 )
摘要:问题 目录 1:栈 2:顺序栈 3:链式栈 4:递归 预备 正文 一:栈 1:定义 栈是一种特殊的线性结构,先进后出,只能在一段进行操作,我们把允许插入和删除的一端称为栈顶,另一端称为栈底。 不含任何数据元素的栈称为空栈。 栈的插入操作叫做进栈,也叫做压栈、入栈 栈的删除操作,叫做出栈,也叫做弹栈。 阅读全文

posted @ 2020-12-05 11:40 风zk 阅读(760) 评论(0) 推荐(0)

04:线性表算法题练习讲解
摘要:问题 目录 预备 正文 1 注意 1 引用 1: 2: 3: 4: 5: 阅读全文

posted @ 2020-12-05 11:39 风zk 阅读(96) 评论(0) 推荐(0)

03*:双向链表与双向循环链表的实现:(前驱、数据域、后继)(初始化、插入、删除、遍历、查找、更新、长度)
摘要:问题 带有头结点的双向链表 带有头结点的双向循环链表 目录 1:双向链表 2:双向链表的操作 3:双向循环链表 预备 正文 一、双向链表 1、结点 单向链表相对数组来说已经有很多优点了,但是,它还有一个最大的弊端,那就是在某种程度上和深度优先遍历有通性.一条路走到黑,从不回头!这种特性在进行数据操作 阅读全文

posted @ 2020-12-05 11:38 风zk 阅读(969) 评论(0) 推荐(0)

02*:单向循环链表的创建插入删除实现(1:线性表、2:单向循环链表)
摘要:问题 目录 预备 正文 1:线性表——链表结构与顺序存储结构优缺点对比 1:存储分配方式: • 顺序存储结构⽤⽤⼀段连续的存储单元依次存储线性表的数据元素 • 单链表采⽤链式存储结构,⽤⼀组任意的存储单元存放线性表的元素 2:时间性能: • 查找 • 顺序存储 O(1) • 单链表O(n) • 插⼊ 阅读全文

posted @ 2020-12-05 11:36 风zk 阅读(370) 评论(0) 推荐(0)

16*:Flutter之dio封装
摘要:问题 目录 预备 正文 1:封装网络请求的几个好处:1、便于统一配置请求参数,如header,公共参数,加密规则等2、方便调试,日志打印3、优化代码性能,避免到处滥new对象,构建全局单例4、简化请求步骤,只暴露需要的响应数据,而对错误的响应统一回调5、对接口数据的基类封装,简化解析流程 2:调用 阅读全文

posted @ 2020-12-05 11:34 风zk 阅读(1478) 评论(0) 推荐(0)

15*:Flutter之事件队列、微任务队列、多线程(timer、flutter、then、scheduleMicrotask、Isolate.spawn、compute)
摘要:问题 1:microtask queue 的优先级高于 event queue ,所以如果 microtask queue有太多的微任务, 那么就可能会霸占住当前的event loop。 2:then优先级高于Flutter 3: isolate高于微任务 目录 预备 我们所熟悉的前端开发框架大都是 阅读全文

posted @ 2020-12-05 11:33 风zk 阅读(4874) 评论(0) 推荐(0)

14*:Flutter之手势GestureDetector
摘要:问题 目录 预备 正文 Flutter中除了少部分组件,如Button相关的组件可以直接通过onPressed实现点击事件。其余组件想实现点击、长按等事件,都需要借助GestureDetector([dɪˈtektə(r)]:探测器; 检测器; 侦察器)来实现手势监听 1:常用的几个手势 下面介绍比 阅读全文

posted @ 2020-12-05 11:32 风zk 阅读(547) 评论(0) 推荐(0)

13*:Flutter之路由跳转
摘要:问题 目录 预备 正文 1:介绍 在Flutter中页面跳转被称之为‘路由’。是通过Navigator 组件管理路由导航,其提供了管理堆栈的方法:Navigator.push(跳转) 和 Navigator.pop(返回)。Flutter配置路由的方式有两种:1、基本路由(静态路由) 2、命名路由( 阅读全文

posted @ 2020-12-05 11:31 风zk 阅读(507) 评论(0) 推荐(0)

12*:Flutter之json、list、map转换
摘要:问题 目录 预备 正文 Flutter Json转List、Map非常简单,我们可以通过dart:convert中内置的JSON解码器json.decode() 来实现 //1:Json转List //一个JSON格式的字符串 String jsonStr = '[{"name":"张三"},{"n 阅读全文

posted @ 2020-12-05 11:30 风zk 阅读(2465) 评论(0) 推荐(0)

11*:Flutter之Button 按钮
摘要:问题 目录 预备 正文 一:介绍 在 Flutter 里有很多的 Button,包括了:MaterialButton、RaisedButton、FloatingActionButton、FlatButton、IconButton、ButtonBar、DropdownButton 等。 一般常用的 B 阅读全文

posted @ 2020-12-05 11:29 风zk 阅读(380) 评论(0) 推荐(0)

10*:flutter之BottomNavigationBar和 BottomNavigationBarItem
摘要:问题 目录 预备 正文 1:BottomNavigationBar 首先,bottomNavigationBar 是属于 Scaffold 中的一个位于底部的控件。通常和 BottomNavigationBarItem 配合使用 BottomNavigationBar构造方法 BottomNavig 阅读全文

posted @ 2020-12-04 20:46 风zk 阅读(1123) 评论(0) 推荐(0)

09*:Flutter之AppBar、工具栏、导航栏
摘要:问题 目录 1:参数详解 预备 Flutter AppBar组件是应用的工具栏,是由多个组件组成。下面详细介绍appBar使用方法、TabBar使用方法、去掉头部的appBar、仿美团发现AppBar(可滚动TabBar) 官方常用属性图文简要说明: 正文 1:参数详解 AppBar 属性 说明 l 阅读全文

posted @ 2020-12-04 20:45 风zk 阅读(1151) 评论(0) 推荐(0)

08*:flutter之Image:(Image、Image.network)
摘要:问题 目录 1:构造器 2:属性详解 预备 正文 1:构造器 一、构造函数 const Image({ Key key, @required this.image, this.frameBuilder, this.loadingBuilder, this.semanticLabel, this.ex 阅读全文

posted @ 2020-12-04 20:44 风zk 阅读(1717) 评论(0) 推荐(0)

07*:Flutter之TextField
摘要:问题 目录 预备 正文 一:参数详解 TextField同时也使用Text 的部分属性: TextField用于文本输入,它提供了很多属性,我们先简单介绍一下主要属性的作用,然后通过几个示例来演示一下关键属性的用法。 1:TextField构造器 const TextField({ Key key, 阅读全文

posted @ 2020-12-04 20:43 风zk 阅读(1625) 评论(0) 推荐(0)

06*:Flutter之ListView:(itemCount、IndexedWidgetBuilder)(ListView.builder、ListView.separated、ListTile)
摘要:问题 目录 1:ListView默认构造方法 2:ListView.builder 3:ListView.separated 4: ListTile 预备 正文 ListView 列表 1:ListView默认构造方法 ListView({ //可滚动widget公共参数 Key key, Axis 阅读全文

posted @ 2020-12-04 20:42 风zk 阅读(1830) 评论(0) 推荐(0)

05*:Flutter之基础布局Container:(Container:padding、margins、borders)(Row、Column、Stack【Align、Positioned】)(MainAxisAlignment、CrossAxisAlignment)(Flex、expanded)(Wrap、Flow)
摘要:问题 (Container:padding、margins、borders) (Row、Column、Stack【Align、Positioned】) (MainAxisAlignment、CrossAxisAlignment) 目录 1:Container(盒子模型) 2:row、column线性 阅读全文

posted @ 2020-12-04 20:40 风zk 阅读(762) 评论(0) 推荐(0)

04*:Flutter之基础Text:style: TextStyle(decorationStyle: TextDecorationStyle.wavy,fontSize: 18,decoration: TextDecoration.underline,), TextSpan
摘要:问题 目录 预备 TextOverflow overflow 文本溢出时的表现形式。 TextOverflow.ellipsis:文本溢出显示省略号 TextOverflow.clip:文本溢出时直接裁剪掉超出部分,不作任何处理 TextOverflow.fade:溢出文本淡入透明 TextOver 阅读全文

posted @ 2020-12-04 20:39 风zk 阅读(1288) 评论(0) 推荐(0)

01*:Flutte之Linux、Flutter常见命令、Flutter环境搭建
摘要:问题 目录 1:Linux 2:Flutter常见命令 3:Flutter环境搭建 预备 正文 1:Linux补充 1:多用户系统 Ubuntu的主要目录 /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 /bin、/usr/bin:可执行二进制文件 阅读全文

posted @ 2020-12-04 20:38 风zk 阅读(819) 评论(0) 推荐(0)

02*:Flutter之介绍和dart介绍和创建flutter项目 :(var int double String)( num、list、map)(?、as、 is、??、.. 函数 )
摘要:问题 目录 1:Flutter介绍 2:什么是Dart 3:Flutter、React-Native、Android原生比较 4:Flutter项目创建 预备 正文 一:Flutter介绍 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutte 阅读全文

posted @ 2020-12-04 20:37 风zk 阅读(250) 评论(0) 推荐(0)

03*:Flutter 初探:(StatelessWidget、StatefulWidget)(【runApp()-->>MaterialApp()-->> Scaffold()】启动-风格-容器)
摘要:问题 目录 1:runApp()函数启动项目 2:MaterialApp() [məˈtɪəriəl] 材料,素材 3:Scaffold()[ˈskæfəʊld] 预备 正文 由上面的架构图可以看出来,flutter最上层是google 的纸墨设计Material Design(MaterialAp 阅读全文

posted @ 2020-12-04 20:36 风zk 阅读(258) 评论(0) 推荐(0)

032*:MVP、MVVM+RAC、MVC
摘要:问题 MVVM和MVP的最大区别是采用了双向绑定机制,View的变动,自动反映在ViewModel上。 1: MVP: 在数据模型M中发起请求,在Presenter组织好数据,通过协议,哪个view遵守了Presenter的协议,数据返回给指定的view; 2: MVVM: 1:一个View对应一个 阅读全文

posted @ 2020-12-04 20:32 风zk 阅读(273) 评论(0) 推荐(0)

031*:组件化(url-block 、target-action、protocol-class)
摘要:问题 简单来说:一个模块对应一个 Mediator的分类 ,一个分类对应一个target,一个target可以包含多个action,每个action都是进行界面跳转。 1、url-block 路由:路由 2、target-action:runtime+分类。 3、protocol-class匹配:通 阅读全文

posted @ 2020-12-04 20:30 风zk 阅读(574) 评论(0) 推荐(0)

030*:界面优化(CoreImage、CoreGraphics、OpenGL ES、metal、CoreAnimation【CALayer】)(预排版,异步渲染,按需加载,动态添加控件,避免使用透明度和圆角,离屏渲染,异步渲染合成一张图片)
摘要:问题 (CoreImage、CoreGraphics、OpenGL ES、metal、CoreAnimation【CALayer】) 1: 目录 1:卡顿的原理 2:卡顿监控 3:卡顿的优化 预备 正文 一:卡顿的原理 1:界面卡顿 通常来说,计算机中的显示过程是下面这样的,通过CPU、GPU、显示 阅读全文

posted @ 2020-12-04 20:20 风zk 阅读(437) 评论(0) 推荐(0)

029*:runloop:获取(CFRunLoopGetMain、CFRunLoopGetCurrent)创建(__CFRunLoopCreate __CFRunLoop结构体 )(CFRunloop、CFRunLoopMode、CFRunloopItem)(CFRunLoopRun -> CFRunLoopRunSpecific -> __CFRunLoopRun)
摘要:问题 0:Runloop生命周期 kCFRunLoopEntry -- 进入runloop循环 kCFRunLoopBeforeTimers -- 处理定时调用前回调 kCFRunLoopBeforeSources -- 处理input sources的事件 kCFRunLoopBeforeWait 阅读全文

posted @ 2020-12-04 20:19 风zk 阅读(334) 评论(0) 推荐(0)

028*:NSAutoReleasePool(objc_autoreleasePoolPush、objc_autoreleasePoolPop)AutoreleasePoolPageData(56) 哨兵元素 autoreleaseFast(autoreleaseNoPage、autoreleaseNewPage、autoreleaseFullPage)
摘要:问题 1:每个线程创建的时候就会创建一个autorelease pool,并且在线程退出的时候,清空autorelease pool。所以子线程的autorelease对象,要么在子线程中设置runloop清楚 2:AutoreleasePoolPage 面试题1:临时变量什么时候释放?面试题2:简 阅读全文

posted @ 2020-12-04 20:18 风zk 阅读(193) 评论(0) 推荐(0)

027*:内存管理 retainCount(TaggedPointer、retain、release、dealloc)(strong & weak )__main_block_impl_0(id类型-__block-->> __Block_byref_a_0-->>forwarding指针指向copy后的地址)SideTables 、extra_rc(引用计数)
摘要:问题 retainCount (TaggedPointer、retain、release、dealloc) (strong & weak ) __main_block_impl_0(id类型-__block-->> __Block_byref_a_0-->>forwarding指针指向copy后的地 阅读全文

posted @ 2020-12-04 20:16 风zk 阅读(183) 评论(0) 推荐(0)

026*:冷热启动优化、二进制重排、clang插桩(Header、Load Commands 、segment)(main函数前、main函数后)重签名 、ASLR、(PageFault 、System Trace、order文件)-fsanitize-coverage=func,trace-pc-guard Dl_info
摘要:问题 1:(虚拟内存、ASLR)(PE、ELF、Mach-O) 2:(Header、Load Commands 、segment) 3:Header(cputype、filetype) 4:Load Commands(动态链接器的位置、程序的入口、依赖库的信息、代码的位置、符号表的位置) 5:(ma 阅读全文

posted @ 2020-12-03 16:18 风zk 阅读(1229) 评论(0) 推荐(0)

025*:LLVM和clang插件开发(预处理编译阶段--编译阶段(词法、语法等的分析、生成中间代码IR【 .ll文件、IR优化、bitCode优化.bc】)--汇编代码 .s文件--生成目标文件 .o文件 --链接【产生的.o文件和.dylib、.a文件链接】--mach-o可执行文件)
摘要:问题 (预处理编译阶段--编译阶段(词法、语法等的分析、生成中间代码IR【 .ll文件、IR优化、bitCode优化.bc】) --汇编代码 .s文件 --生成目标文件 .o文件 --链接【产生的.o文件和.dylib、.a文件链接】--mach-o可执行文件) 目录 1:概念 2:编译流程 3:自 阅读全文

posted @ 2020-12-03 11:29 风zk 阅读(647) 评论(0) 推荐(0)

024*:Block的原理 (Block_layout、__main_block_impl_0、__Block_byref_a_0)(_Block_copy、_block_invoke)(_Block_copy、_Block_byref_copy、_Block_object_assign、_Block_object_dispose)
摘要:问题 1:block的本质是对象、函数、结构体,由于block函数没有名称,也被称为匿名函数 2: __weak __strong __block 3:(NSGlobalBlock NSMallocBlock NSStackBlock) 4:(_Block_copy、_block_invoke) 5 阅读全文

posted @ 2020-12-03 11:27 风zk 阅读(351) 评论(0) 推荐(0)

023*:定时器和锁原理 ( Dispatch_source_t NSTimer CADisplayLink) @synchronized(SyncList SyncData threadCount lockCount )(NSLock当前线程一把锁)(NSRecursiveLock当前线程递归锁相当多把锁)(NSCondition线程+锁)(NSConditionLock线程、条件和锁)
摘要:自旋锁和互斥锁:区别 1:而Spin lock(自旋锁)则不然,它属于busy-waiting类型的锁,如果线程A是使用pthread_spin_lock操作去请求锁,那么线程A就会一直在Core0上进行忙等待并不停的进行锁请求,直到得到这个锁为止。 自旋锁(Spin lock) 自旋锁与互斥锁有点 阅读全文

posted @ 2020-12-03 11:26 风zk 阅读(226) 评论(0) 推荐(0)

022*:GCD源码底层探索 (dispatch_group_async dispatch_group_enter dispatch_group_leave) _dispatch_call_block_and_release (dx_push pthread_creat dx_invoke)dispatch_semaphore_signal wait create
摘要:问题 _dispatch_call_block_and_release 执行任务 同步回调,block执行 block回调:底层通过dx_push递归,会重定向到根队列,然后通过pthread_creat创建线程,最后通过dx_invoke执行block回调(注意dx_push和 dx_invoke 阅读全文

posted @ 2020-12-03 11:25 风zk 阅读(705) 评论(0) 推荐(0)

021*:GCD 【dispatch_async dispatch_queue_t】 dispatch_group_t、dispatch_barrier_async 、dispatch_semaphore_t、dispatch_once_t、dispatch_apply、dispatch_after、dispatch_source_t 、pthread 、NSThread、NSOperation
摘要:问题 dispatch_sync将任务 block通过 push到队列中,然后按照 FIFO去执行。 dispatch_sync造成死锁的主要原因是堵塞的tid和现在运行的tid为同一个 dispatch_async会把任务包装并保存,之后就会开辟相应线程去执行已保存的任务。 semaphore主要 阅读全文

posted @ 2020-12-03 11:20 风zk 阅读(228) 评论(0) 推荐(0)

020*:多线程基础知识:(进程、线程、线程池)(线程生命周期【新建、就绪、运行、阻塞、销毁】)(锁【自旋锁 原子锁、互斥锁】)(线程、runloop、NSPort)(线程通讯)
摘要:问题 (进程、线程、线程池) (线程生命周期【新建、就绪、运行、阻塞、销毁】) (锁【自旋锁 原子锁、互斥锁】) (线程、runloop、NSPort) (线程通讯) 目录 1:进程与线程 2: 多线程的优缺点 3:多线程的内存消耗 4:多线程处理方案 5:线程生命周期 6:线程池的原理 7:线程优 阅读全文

posted @ 2020-12-03 10:17 风zk 阅读(167) 评论(0) 推荐(0)

019*:内存五大区:(栈、堆、全局静态区、常量区、代码区)(线程、函数栈、栈帧)
摘要:问题 目录 1:内存基础概念 2:内存五大区 3:函数栈 预备 正文 一、内存基础概念 1.1 物理内存 & 虚拟内存 物理内存(Physical Memory):指通过物理内存条而获得的内存空间,和虚拟内存对应;主要作用是:设备运行时为操作系统和各种程序提供临时储存空间;iPhone 6 和 6 阅读全文

posted @ 2020-12-03 10:16 风zk 阅读(1554) 评论(0) 推荐(1)

018*:kvo:(context、kvo合规【kvc基础上】)(isa-swizzling kvo派生类 NSKVONotifying_本类名)(重写setter、class、dealloc、_isKVOA)(重写set【手动开启通知、修改isa】、class、malloc【修改isa】)
摘要:问题 目录 预备 1:测试代码:(监听person对象的name属性的新值) // HTPerson @interface HTPerson : NSObject @property (nonatomic, copy) NSString *name; @end @implementation HTP 阅读全文

posted @ 2020-12-02 23:55 风zk 阅读(222) 评论(0) 推荐(0)

017*:kvc原理 :(赋值和取值【_key,_iskey,key,iskey】(【路由、模型转换、私有变量】)
摘要:问题 目录 1、定义 2、KVC 相关方法 3、赋值的策略 预备 1: 定义基本的方法 @interface LPPerson : NSObject{ @public NSString *_isName; NSString *name; NSString *isName; NSString *_na 阅读全文

posted @ 2020-12-02 23:52 风zk 阅读(372) 评论(0) 推荐(0)

016*:方法交换Method-Swizzling?(1:一次性问题:load或者initialize 2: 子类不和父类方法。)
摘要:问题 1:一次性问题:load或者initialize 2: 子类不和父类方法。 目录 1:method-swizzling 是什么? 2:注意: 3:method-swizzling - 类方法 4:method-swizzling的应用 预备 测试代码:HTRuntimeTool类:负责方法交换 阅读全文

posted @ 2020-12-02 23:50 风zk 阅读(266) 评论(0) 推荐(0)

015*:面试题
摘要:一:Runtime Asssociate方法关联的对象,需要在dealloc中释放? 不需要 当我们对象释放时,会调用dealloc 1、C++函数释放 :objc_cxxDestruct 2、移除关联属性:_object_remove_assocations 3、将弱引用自动设置nil:weak_ 阅读全文

posted @ 2020-12-02 22:52 风zk 阅读(118) 评论(0) 推荐(0)

014*:分类和类扩展和关联属性-(AssociationsHashMap-ObjectAssociationMap)
摘要:关联对象本质 关联对象底层实现:**其实就是两层哈希map , 存取的时候两层处理**。 第一层:类名object:bucket【AssociationsHashMap】 第二层:key:ObjcAssociation(value和policy)【ObjectAssociationMap】 1: C 阅读全文

posted @ 2020-12-02 19:31 风zk 阅读(331) 评论(0) 推荐(0)

013:分类的加载:realizeClassWithoutSwift -> methodizeClass -> attachToClass ->load_categories_nolock->attachCategories, loadImage的加载
摘要:问题 懒加载分类会在编译器把数据加载 只要有非懒加载分类会走attachCategories来加载分类数据 1:methodizeClass内部有对分类的处理 2:attachToClass 3:attachCategories函数:绑定分类。 4:extAllocIfNeeded:-> extAl 阅读全文

posted @ 2020-12-02 17:10 风zk 阅读(247) 评论(0) 推荐(0)

012:类的加载上:mapImage-[readClass->UnfixedSelectors->readProtocol]->realizeClassWithoutSwift->[methodizeClass->prepareMethodLists->fixupMethodList]->attachCategories)、loadImage(加载load方法),
摘要:问题 readImage->(readClass->UnfixedSelectors->readProtocol)->realizeClassWithoutSwift->methodizeClass->attachCategories) 1: readImage 2:readClass->Unfix 阅读全文

posted @ 2020-12-02 13:36 风zk 阅读(276) 评论(0) 推荐(0)

011:dyld和objc的关联-(_dyld_objc_notify_register-registerObjCNotifiers-sNotifyObjCInit-map_images-load_images-unmap_image)
摘要:问题 目录 预备 正文 一:_objc_init 源码解析 void _objc_init(void) { static bool initialized = false; if (initialized) return; initialized = true; // fixme defer ini 阅读全文

posted @ 2020-12-02 10:57 风zk 阅读(241) 评论(0) 推荐(0)

010:dyld加载流程-(_dyld_start-dyldbootstrap::start-dyld::_main-dyld::initializeMainExecutable-ImageLoader::runInitializers-ImageLoader::processInitializers-ImageLoader::recursiveInitialization)
摘要:问题 目录 预备 正文 1:main、load、C++ 的执行顺序 __attribute__((constructor)) void htFunc() { printf("%s \n",__func__); } @interface HTPerson : NSObject @end @implem 阅读全文

posted @ 2020-12-01 21:13 风zk 阅读(527) 评论(0) 推荐(0)

009:消息流程分析-动态方法决议&消息转发-[resolveInstanceMethod-forwardingTargetForSelector-methodSignatureForSelector-forwardInvocation]
摘要:问题 1:动态方法决议调用次数? 目录 1:消息发送的流程 2:动态方法决议 3: 消息转发 预备 正文 一:消息发送的流程 1:先去本类的缓存方法列表中查找,核心函数是CacheLookup 2:如果没有找到,就去本类的方法列表中查找, 3:如果当前方法列表还是没有,就通过 superClass指 阅读全文

posted @ 2020-12-01 17:48 风zk 阅读(694) 评论(0) 推荐(0)

008:消息流程分析之慢速查找-[lookUpImpOrForward-findMethodInSortedMethodList-cache_getImp-resolveInstanceMethod]
摘要:问题 目录 预备 正文 一:方法的查找顺序 1:实例对象、类对象、元类对象以及根元类对象。它们是通过一个叫 isa 的指针来关联起来。那么消息的慢速查找就是依靠这种关系来进行的。 对象的实例方法的查找(类对象) 自己有找自己的 自己没有 - 找父类的自己没有 - 父类也没有 - NSObject自己 阅读全文

posted @ 2020-12-01 15:49 风zk 阅读(325) 评论(0) 推荐(0)

007:消息流程分析之快速查找-CacheLookup-【isa-objc_msgSend -CacheLookup-[Cachehit CheckMiss JumpMiss]-__objc_msgSend_uncached-MethodTableLookup-lookUpImpOrForward】
摘要:问题 1:objc_msgSend原理是什么? 1: objc_msgSend-->> 2: GetClassFromIsa_p16-->> 3: CacheLookup-->> 4: 成功(Cachehit),匹配失败,触发CheckMiss和JumpMiss流程-->> 5: __objc_ms 阅读全文

posted @ 2020-12-01 00:01 风zk 阅读(270) 评论(0) 推荐(0)

导航