<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Meteor-Z个人播客</title><link>https://liuzechen.top/</link><description>Recent content in Home on Meteor-Z个人播客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 06 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://liuzechen.top/index.xml" rel="self" type="application/rss+xml"/><item><title>2026年国庆之旅</title><link>https://liuzechen.top/posts/2026-10-06-%E5%9B%BD%E5%BA%86%E4%B9%8B%E6%97%85/</link><pubDate>Tue, 06 Oct 2026 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2026-10-06-%E5%9B%BD%E5%BA%86%E4%B9%8B%E6%97%85/</guid><description>说起来也挺巧，去年国庆我也写了一篇随笔，记录了去年十月跟同学去香港、澳门的旅途，而今年的国庆我是直接回家了。回家呆了四五天。
9月30日下午我就已经坐不住了，想着国庆快点来吧，想放松一下，下班后，简单收拾了一下，凌晨我就去北京西站了，等凌晨1点40的加急的红眼高铁，飞速通往郑州。
我抢到的高铁其实是无座的，没有座位， 要把我难受死了。只能在高铁通道之间坐着，坐了三四个小时，完全睡不着觉，幸好北京西站、郑州东站之间离得很近，所以不到3小时，也就是5点左右，我就到达目的了，随后又买了一张从郑州长途中心站到济源站的大巴，吭哧吭哧坐了两个多小时大巴，快9点左右回到了济源。
郑州和济源之间的交通是真的差，之前在郑州上学的时候，每次往返要么是拼车、要么是大巴，挺累的，而且拼车还要收100块，当时我的还是觉得挺贵的（ 现在也觉得挺贵的）。不过2029年，济源的高铁应该会开，到时候估计会方便很多，还挺好的。
每次长假的时候，我都想静下心来学习、沉淀一下，结果国庆期间，也没干啥，每天都是玩玩玩，要么就是跟亲戚闲聊，无所事事。哈哈哈哈，每次都是这样。
国庆去了挺多地方，值得一提的是，今年2026年正巧是一中百年校庆，在家的最后一天，也就是五号那天的上午，去了一中里面参观百年校庆，一中有些地方发生了变化（好像修了一个新的体育馆并且有一个科技展馆？？），不过其他还是老样子，没有太大的区别。跟昔日的同学吃了一顿饭，然后闲聊了一句，就 润了，要不是晚上要坐火车回北京，估计还能看个一中的表演。
时间过的真的很快，我是2018级、21届毕业的，转眼都快过去十年了都，时光任然，岁月匆匆啊。不过我觉得我还是比较年轻的，看学校里面的志愿者，很青春，丝毫没有被社会毒打过的感觉。不过我感觉他们觉跟我差不多（这里应该是我跟他们差不多，毕竟他们确实比我年轻，），感觉我穿个高中校服，也完全可以混到高中生里面🤔
晚上8点左右，坐火车就准备回京了，这应该是我第一次做火车（我记忆中好像就是坐过一次火车的，但是真的忘了），哎呦卧槽，我买的是硬卧，还是上铺，难受死我了，在上铺完全做不起来，头上就是天花板，有点幽闭恐惧症了。晚上隔壁两个大哥，呼噜声一个比一个大，完全没睡好，我自己都不知道自己睡没睡，撑着就到北京丰台站了，然后又坐地铁，回到家中，直接开睡！
经过这个国庆，我明白了 &amp;ndash; 坐高铁、火车一定要带诸如屁垫、耳塞之类的东西，否则根本受不了。
今天是10月6号，能否唱100遍反方向的钟，回到10月一日呢，😭😭😭😭😭😭
总的来说，国庆过的还是非常舒服的，国庆七天，公司没有一个人在 OA上找我查问题，我甚至感觉我没有这份工作一样，并且脱离了互联网环境，什么 AI、ChatGPT、A÷，大模型，都是什么玩意，都与我无关。都滚一边去吧，没有这些东西，我感觉我依旧过的很好，我怀念这样的气氛（但是这样的氛围时间一长，又觉得无聊，上班上久了，又想休息，休息久了，又觉得无聊，周而复始，周而复始。。。人还是要找点事情干比较好）</description></item><item><title>开发一款属于自己的 APP</title><link>https://liuzechen.top/skill/2025-09-02-%E5%BC%80%E5%8F%91%E4%B8%80%E6%AC%BE%E5%B1%9E%E4%BA%8E%E8%87%AA%E5%B7%B1%E7%9A%84-app/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-09-02-%E5%BC%80%E5%8F%91%E4%B8%80%E6%AC%BE%E5%B1%9E%E4%BA%8E%E8%87%AA%E5%B7%B1%E7%9A%84-app/</guid><description>目前还在更新中&amp;hellip;.
前期准备 需求背景 社招面试的时候，有一场三面，面试官问我现在VibeCoding 这么强了，有没有考虑自己做点什么事情呢，当时我的回答是AI 现在确实可以解决很多事情，但是AI 是生产端，不是消费端，我目前没有什么需求，所以没有用 AI 做什么事情，一般只在工作场景下才会 AI（或者查相关资料的场景下才会AI 一下），这句话有点余音绕梁了，目前在 AI 这么强的基础下，我能不能做一点事情呢？
同样，做东西之前，也需要需求，我想着如果能解决一些事情，是更好的，并且借此机会，能够加强一下我计算机专业能力，也是很不错的，所以就想着写一款 APP。
做 APP 肯定不是为了赚钱的目的去的，公司为了降本增效，肯定是大力推举 AI，然后快速将项目推上线，然后赚钱，但是自己做的话，其实更看重的是整个过程，如果从一个 iOS开发者的视角下，更好的设计框架、内容去完成一个 APP。并且在公司写的代码，都是基于前人搭的框架去写的，有点增删改查，这次是从0开始写一个App，并且没有PRD，没有设计，没有内容，真的是从0开始。在这一个过程中，我还是觉得自己能学到很多知识的
我做的 APP还是有点老生常谈、有点烂俗了，但是做什么是不重要的，重要的是能够做出来，怎么实现才是重要的。目前是想做一个学校的 BBS 论坛，然后里面的内容有树洞之类的内容，并且能够发表闲置物品（只用于发表，交易还是线下交易，平台只是用于发布）。先这样写
考虑一下，如果做我校的 BBS 论坛，可能涉及到后端，并且做了，我校学生也不一定用，所以想写一个浏览器，类似于 Chrome 这样的，当然了，比较简单、简洁的
目前综合考虑下来，并且以后我自己会用到的，就是做一款基于 WKWebView 的浏览器，如果以后有时间的话，可以基于 Flutter 写一个校园 IM 平台（正巧可以学学 Flutter）
技术准备 客户端 因为我是做客户端的，所以这里我很熟悉，这里使用 OC 语言编写
设计 APP 肯定还是需要原型图的。，这里直接写个需求背景，然后直接让AI 生成一个吧。
整体架构 这里是想到哪里，补充到哪里，争取都能做好
flowchart LR App --&amp;gt; 鸡架 App --&amp;gt; 业务 鸡架 --&amp;gt; 路由 鸡架 --&amp;gt; 组件化 鸡架 --&amp;gt; 基础组件 基础组件 --&amp;gt; 图像库SDWebImage 基础组件 --&amp;gt; 网络AFNetWorking 基础组件 --&amp;gt; UI查看器:Lookin 业务 --&amp;gt; 筛选图片模式 业务 --&amp;gt; 提取文字 业务 --&amp;gt; 多标签功能 业务 --&amp;gt; 广告拦截 业务 --&amp;gt; 关于模块 业务 --&amp;gt; 标签 业务 --&amp;gt; 历史记录 业务 --&amp;gt; 清除数据 业务 --&amp;gt; 基础业务 --&amp;gt; 本地化国际化 组件化 如果对于一款 APP 来说，将所有的代码都放到主仓库里面，会有一下缺点</description></item><item><title>记第一次社招以及一些感想</title><link>https://liuzechen.top/posts/2026-08-01-%E8%AE%B0%E7%AC%AC%E4%B8%80%E6%AC%A1%E7%A4%BE%E6%8B%9B%E4%BB%A5%E5%8F%8A%E4%B8%80%E4%BA%9B%E6%84%9F%E6%83%B3/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2026-08-01-%E8%AE%B0%E7%AC%AC%E4%B8%80%E6%AC%A1%E7%A4%BE%E6%8B%9B%E4%BB%A5%E5%8F%8A%E4%B8%80%E4%BA%9B%E6%84%9F%E6%83%B3/</guid><description>2026年6月底，某一个周一的晚上，leader 突然喊话到小会议室中，通知要裁员走人，记得我当时的心脏就有点受不了，心脏突然就砰砰跳，但是回到工位上，我甚至有一股释然的感觉（感觉有点奇怪，），于是在工作了几天，主要是处理完手头上的工作，之后我就开始准备面试以及找工作之旅了。
准备简历 我大约花了一周的时间去准备简历以及刷题，现在 AI 太好用了，很多事情都可以用 AI写一下，我把我的项目先写了一个文档，然后在文档的基础上，使用了网上的Skill提取其中的&amp;rsquo;精华&amp;rsquo;，然后自己再在此基础上修改了一下，简历这就算写好了，然后让 mt看了一下，小修了一下，就 ok 了。
社招面试的事情 社招面试跟校招面试的区分度还是挺大的，之前校招的时候，更多考察的是八股文，也就是操作系统、计算机网络、C++基础知识点等基础知识，而社招就不一样，社招更看重的是
第一次社招，分享几个有趣的故事吧。
某厂一面面试官，说我技术水平很高，一年的经验，远超其他人，哈哈哈，还挺害羞的，但是这场的四面的面试官，就有点让我生气了，生气的点是四面面试官说我们产品十年前就有了类似的产品，现在还是这个形态吗？（说了一大堆，大体意思就是你们产品现在还有人在用吗？）。一下子就把我气笑了。只能给他解释我们产品用户还是比较多的。作文面试官你可以考我技术、业务能力，说我技术不行，业务不行，但是说我们产品真的有点生气了，有点侮辱人了。
某场三面面试官问我这几个问题，我还觉得蛮有趣的，他说职场中，你觉得什么是最终的，我回答说是诚信、真诚。结果就被面试官反问：那你博客上说找实习的时候，说要实习几个月的时候，说能实习六个月，这不是撒谎吗。当时有点脸红了，因为我确实说过这句话，一方面这个地方确实撒谎了，另一个方面觉得面试官真的看我博客了，我还挺高兴的，居然还是会有人看我的博客的。
离开 离开那天是周五，7月的深圳已经下了20多天的雨了，那天也不意外，下的也是小雨，下午临走之前，看到了一个莲花抱枕，想着是 Android 一位老哥送我的，于是想跟 这位老哥拍一张照片，于是就去了我左边的会议室中，一进去，我就有点绷不住了，哭了出来。眼泪哗哗的往下流，拍的照片回头看，发现自己眼都瘦红的，没拍好。
晚上同事们去吃了辣可可，并且去科兴下面的魅ktv唱了一首歌，唱歌的时候，唱到了 hobe 的 《你就不要想起我》，唱完之后，别人突然从某一个送我一束鲜花，然后唱起了吴奇隆的《祝你一路顺风》，也没绷住，哎，人老了，就没办法经历这种伤心事了。
我哭的原因不是因为我被裁员这件事情上，而是因为作为同事，以后可能就再也不会见面了，虽然作为同事只有一年，但是我还是很珍惜这些同事的，也珍惜这段时光，所以写了下来，可能之后也不会有这么好的同事了，
新的开始 我2025年毕业，到至今为止，也只工作了不到一年的时间，而一年的时间，我经历的还是蛮多的，入职、封培、学习、被干掉、求职。一句古话说的好，大厂一年，人间三年（你想想你都工作三年了）我一想想我天天这么忙碌，也才经历了一年时间，也不知道时间是快呢，还是慢呢。
跟我一起被优化的人，很多都想休息几个月，然后再找工作，我觉得我现在还比较年轻，还想再干几年，所以就准备奔向下一个职场了。
社招整体下来，还是比较顺利的，收获了几个 offer，我不知道我应该选择哪一个，如果我选择了 A 公司，那么 B 公司就要拒绝，我不知道 A 公司对我来说是不是好的，如果 A 公司不好，而 B 公司很好，我就会失去一些东西；如果没有去 A 公司，而是去 B 公司，我就会收获在 B 公司的经历，而 A 公司的经历都会失去；面试的时候遇到过一些面试官，非常有趣、非常有技术深度、脑电波都对着上，但是可能因为一些原因，没有选择，还是比较有一定的遗憾，很遗憾不能跟脑电波对着上的人作为同事；当然，当我写下这段话的时候，我已经做好了抉择。正坐着高铁前往北京西站的路上，我不知道我的选择是正确的还是错误的，或许是对的，或许是错的，但这是属于我独有的经历，一切都是最好的安排。</description></item><item><title>分析堆内存</title><link>https://liuzechen.top/skill/2026-6-14-%E5%88%86%E6%9E%90%E5%A0%86%E5%86%85%E5%AD%98/</link><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2026-6-14-%E5%88%86%E6%9E%90%E5%A0%86%E5%86%85%E5%AD%98/</guid><description>这两天看了WWDC的一些视频，发现在WWDC上可以学到很多知识。记录一下
深入了解iOS内存 iOS跟其他的操作系统不一样的是，其他操作系统如果遇到内存不足的情况，会进行内存交换，也就是将不用的内存放到硬盘里面,但是iOS不一样，他会直接将其他应用杀死,那么当内存不够用时OS 的处理是会发出内存警告，告知进程去清理自己的内存，代码中的 didReceiveMemoryWarning() 方法就是在内存警告发生时被触发，app 应该去清理一些不必要的内存，来释放一定的空间.
未被使用的内存页是 Clean Page，使用的是Dirty Page，以及一个Compressed Page
Clean Page:在iOS上指的是重新创建的内存： Dirty Page:也就是使用的内存 app 的二进制可执行文件 framework 中的 _DATA_CONST 段 文件映射的内存 未写入数据的内存 Compressed memory:内存不够用的时候，将内存进行压缩，当用的时候，再解压回来，也属于 Dirty Memroy 之前是将内存与硬盘进行交换，但是现在呢？这里是在内存中将这些 Page 进行压缩，这样一来，就不需要跟硬盘进行交换，但是 CPU的工作量就会变高， 注意到，当收到内存警告的时候，此时要清理内存了，结果要清理 NSDictionary的一些东西，但是这些刚好是 Compressed memory 的时候，此时一解压，反而使用内存更多了， 所以，进行缓存更推荐使用 NSCache 而不是 NSDictionary，就是因为 NSCache 不仅线程安全，而且对存在 compressed memory 情况下的内存警告也做了优化，可以由系统自动释放内存。
工具使用 Memory Graph Xcode 中可以将 Memory Graph 导出，导出之后，可以使用 vmmap 和 leaks 进行分析
图像 图像的内存使用大小跟图像的尺寸有关，跟图像的文件大小无关
图像显示到屏幕上，最终会展示成位图(Bitmap)的，也就是说当前图片大小不是跟图像的文件大小有关，而是跟如下的的尺寸大小有关
内存占用 = 内存占用 ≈ 宽 × 高 × 每像素字节数 这里有两个概念，data buffer 和 image buffer</description></item><item><title>Crash分析</title><link>https://liuzechen.top/crash/</link><pubDate>Thu, 08 Jan 2026 00:00:00 +0000</pubDate><guid>https://liuzechen.top/crash/</guid><description>看了很多关于Crash的文章，对此如此着迷，所以就整理一下
寄存器 ARM一共有33个寄存器，0-30是通用寄存器，31和32是专用寄存器（31是sp寄存器，32是pc寄存器），所以是31个通用寄存器，两个特殊寄存器，当然，还有几个是状态寄存器，
前31个寄存器的访问方式是：
使用X0～X30来访问时，是64位数据 使用W0～W30访问时，是低32位的数据 注意，如果用低32位的数据访问的话，也就是W开头的，那么高位的数据就会被清空
对于特殊寄存器来说：
32bit的时候，作为栈帧寄存器（stack point,SP）的时候，用WSP来访问 64bit的时候，作为栈帧寄存器（stack point,SP）的时候，用SP来访问 32bit的时候，作为零寄存器（Zero register）的时候，用WZR来访问 64bit的时候，作为零寄存器（Zero register）的时候，用WZ来访问 每一个寄存器都干不同的事情，常用的如下
X0～X7：传入函数的参数，如果有更多的参数，则会通过栈进行传递 SP：上述的栈指针寄存器，维护栈指针，指向栈的顶端。 FP（Frame Point：也就是X29，栈指针寄存器，指向栈的底部 LR （Link Register）X30，链接寄存器，存储的是函数调用完成的返回地址的下一条地址，图片如下，[函数的调用栈就是从LR处找到的] 图片出处，仅用于学习，侵权会删除的
objc_msgSend OC比较特殊，所有的函数调用都会转换成objc_msgSend，对于
常用的命令行等指令 LLDB LLDB的一些命名，还是比较有用的，
break set -n &amp;quot;-[UIView layoutSubviews]&amp;quot; # 符号断点 break set -a 0x1029855e0 # 在某一个地址上打断点 breakpoint set --one-shot true -name '-[UILabel setText:]' // 在这个符号上打一个断点，然后one-shot,打一个就停止 po $arg1 # 打印出第一个self po (SEL)$arg2 # 打印出当前的SEL, expr 变量 | 表达式 # 显示变或者表达式的数值 expr -f h -- 变量 | 表达式 # 16进制格式显示变量或者表达式的数值 expr -f b -- 变量 | 表达式 # 二进制的形式 expr -i -- oc对象 # 等价于 po oc 对象 expr -P 3 -- oc对象 # 上面命令的加强版，会显示内部的数据变量的结构 expr my_struce-&amp;gt;a = my_array[3] 赋值 expr (char*)_cmd # 显示某一个oc变量的方法名 expr (IMP)[self methodForSelector:_cmd] # 执行这个函数 p (IMP)[self methodForSelector:_cmd] # 打印出当前函数的地址 其他命令 使用otool对线上的app部分代码进行反汇编</description></item><item><title>2025年终总结</title><link>https://liuzechen.top/posts/2026-01-03-2025%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2026-01-03-2025%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/</guid><description>2025年对于我来说，大致可以分成两个时间节点，上半年和下半年，
上半年 上半年我主要是在学校，还是一名学生，除了赶毕业论文，还去TME实习了一个多月左右，实习的时候，还被房东骗了一笔钱，具体详细的可以看我之前的文章:我的实习之旅，除了实习，那就是写论文了，原本以为论文还比较难，结果到最后，还&amp;quot;混&amp;quot;了一个优秀毕业论文（，不过奖励只有一个U盘，不过还是不错的。
下半年 2024年5月12日，我打完比赛，晚上就坐高铁，匆匆往往往往武汉出发，隔日，也就是5月13日，我正式开始了实习之旅，如今，2025年7月2日，我也正式上班。
正式上班后，我发现时间过得真的非常快，不知不知觉，已经2026年了，每天都在上班，导致自己的时间被一点点消耗，这就不得不让我时间规划起来，当一个时间管理大师（）。不过有一点的是,我在大学毕业的时候，找到一个程序员工作，一个我从小就非常喜欢的工作，虽然说有各种乱七八糟的事情，但是我依旧热爱编程，那是我唯一骄傲的事情。
我认为程序员是一个不会厌烦的工作，程序员每天都会在用代码创建东西，每天都在思考🤔，当手指在键盘上敲击的时候，多巴胺就会分泌，当你完成一个需求，创建一个东西的时候，更会感觉到快乐。 网上说当你的热爱跟你的工作重叠后，可能以后就不会热爱这门工作了，至少我现在没有，希望我以后也不会失去这份热爱。
工作中，我遇到了很多优秀的伙伴，平时一起玩的同事，一起工作的同事，他们都比我优秀的多，都是我学习的榜样，（作为网络上的鼠鼠，喜欢偷偷&amp;quot;偷窥&amp;quot;别人，别人有什么长处，我能不能学习一下，别人有什么值得我学习的地方？我能不能学习一下？总之，就是不断完善自己吧）。
工作 工作上，下半年确实犯很多问题，导致出现了一些问题，这些问题甚至可能耽误了工期，ld看我是应届生的身份，所以很多时候都对我挺包容的，但是终究有一天我不会是一个应届生的身份，终究会有一天我要独自面对一个需求，独自承担一个开发工作，所以还是得赶快进步，赶快成长。
沟通交流 上班之后，我发现我沟通交流能力真的是垃圾的要死，很多时候不会表达，不会说话，不会张口。虽然工作后期比前期要好很多，但是我依旧感觉不是很完美，很多时候都是说到什么，讲到什么，好像没有什么逻辑可言。这一点在2026年还要不断提高。
开发流程 作为一个跟代码打交道的人，我目前依旧在不断的完善自己的工作流程，如使用Vim、layzigt，aerospace等工具提高自己的效率，使用TODOList来记录自己的待办，总的来说，这一点我还是做的不错的？希望以后继续保持。
AI 我现在几乎完全无法离开AI了，但是目前公司在推AI编程，我似乎还是守旧派，没有办法使用AI，最大的原因还是因为Xcode不支持吧，xcode太逊了，关于AI的很多东西都没有办法使用，导致没有办法使用AI编程，但是很多时候，我查找资料，都会直接先去问AI，效果非常好，而且学习一些新知识的时候，都会先问问AI，AI讲的真是非常清楚。
减肥 2025年下半年体检的时候，我的身体指标开始爆红，体重也很高，导致我不得不开始减肥，我下定决心一定要减肥，具体可见减肥一篇，
想到什么就写什么了，祝大家2026新年快乐！</description></item><item><title>AudioUnit相关</title><link>https://liuzechen.top/skill/2025-11-18-audio%E7%9B%B8%E5%85%B3/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-11-18-audio%E7%9B%B8%E5%85%B3/</guid><description>AuidoUnit AudioGraph</description></item><item><title>国庆-香港澳门旅游（神奇的10月2日）</title><link>https://liuzechen.top/posts/2025-10-06-%E9%A6%99%E6%B8%AF%E6%BE%B3%E9%97%A8%E6%97%85%E6%B8%B8%E7%A5%9E%E5%A5%87%E7%9A%8410%E6%9C%882%E6%97%A5/</link><pubDate>Mon, 06 Oct 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2025-10-06-%E9%A6%99%E6%B8%AF%E6%BE%B3%E9%97%A8%E6%97%85%E6%B8%B8%E7%A5%9E%E5%A5%87%E7%9A%8410%E6%9C%882%E6%97%A5/</guid><description>未完待续
10月1日晚上Hello哥从上海飞到深圳之后，第二天就去了香港旅游，然后三号去了澳门、四号聚餐吃了一点，之后就回去了。其实玩的还是非常开心的。
10月2日：香港旅游 10月2日真是一个神奇的日志，2025年的10月2日我收到了这几个好消息：
公司的实习转正过了，三个月的时间过的真快啊，7月2日来到公司，然后今天已经10月6日了，真的好快 买了最新的iPhone17，二号从香港回来的时候，就火急火燎的出发，到苹果直营店拿到最新的iPhone17，用起来确实舒服 去了香港，坐船去了长洲，然后 值得一提的是：2023年的10月2日也是我打省赛日子，那时候我们队伍拿到了河南省ACM省赛金牌，也是很开心的。
10月3日 澳门旅游 说实话，我觉得澳门旅游是要比香港好的，主要是有以下几点
澳门的车费比香港便宜、澳门的发财车是免费的，而且澳门的巴士只需要6澳元，差不多就是5块多，非常便宜，而香港主要是地铁，按理来说，地铁要便宜的，可惜它是香港的地铁，非常贵。。。 澳门的花费比香港便宜，不仅是交通比较便宜，而且吃的什么的都要比香港便宜（主要是澳门赌场里面吃的是免费的），比如美高梅的珍珠奶茶，真的不错 澳门的人文风情比香港好，香港真的是太挤了，澳门要好很多 来澳门的第一件事情就是去赌场，赌场真的金碧辉煌，真的超级豪华，比网上看的赌场影片更加豪华，
10月4日 香港赛马 这一天是最后一天，还是跟同学去了香港，不过是去香港看赛马，观摩了几场后，发现这玩意比赌博还逆天，很多1号位的马跑到最后就成倒数了，同学拿20港币投了一匹马，很显然，直接寄了。而且在现场看赛马，发现巨多老头老太太，几乎没有年轻人，😂，也挺离谱的</description></item><item><title>如何写出可维护性的UI界面</title><link>https://liuzechen.top/skill/2025-08-10-%E5%A6%82%E4%BD%95%E5%86%99%E5%87%BA%E5%8F%AF%E7%BB%B4%E6%8A%A4%E6%80%A7%E7%9A%84ui%E7%95%8C%E9%9D%A2/inde/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-08-10-%E5%A6%82%E4%BD%95%E5%86%99%E5%87%BA%E5%8F%AF%E7%BB%B4%E6%8A%A4%E6%80%A7%E7%9A%84ui%E7%95%8C%E9%9D%A2/inde/</guid><description>UI界面是随意可变的，其内部的数据无时无刻都在变化，因为数据的变化可能会导致UI界面的变化，我们既要UI界面能够流畅运行，又要能够使得UI界面是可维护的，那么应该怎么做呢？
AutoLayout和Frame布局 iOS无非就两种布局，一种是绝对布局，基于frame的形式，另一种是相对布局，基于autolayout的形式，并且使用最多的还是masonry，在我用的过程中，有以下优点和缺点。
AutoLayout布局 现在在项目开发的时候，我几乎都是使用autoLayout布局，因为写起来比较舒服，虽然性能不是很好，但是写起来快，代码看起来整洁，易于维护。在autolayout布局中，有这么几个函数比较关键。，
- (void) setNeedsUpdateConstraints; - (void)updateConstraints; 其中，自动约束的视图应该放在updateConstraints中进行更新，
AutoLayout注意的点 在updateConstraints的官方文档中注意到[super updateConstraints]应该放在最后一行。 Frame布局 frame布局对应的函数也有两个对应的函数
- (void)layoutSubviews; - (void)setNeedsLayout; Frame注意的点 在layoutSubviews中，因该提前使用[super layoutSubviews]，</description></item><item><title>封培有感</title><link>https://liuzechen.top/posts/2025-08-03-%E5%B0%81%E5%9F%B9%E6%9C%89%E6%84%9F/</link><pubDate>Sun, 03 Aug 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2025-08-03-%E5%B0%81%E5%9F%B9%E6%9C%89%E6%84%9F/</guid><description>2025年7月28日 - 2025年8月1日，校招封培，总体来说，玩的很开心，前几天的培训感觉有点累，上完课后也不太想写代码，就只完善了相关需求。但是最后一晚上的live house，真的不错，现场真的非常热闹，我作为一个设备搬运工，帮忙搬设备，其实还是有点贡献的。
唯一让我焦虑的是校招的硕士率是70%，差不多五个人只有一个是本科，而我也是组内唯一一位本科，所以组内都叫我小孩，我还是很喜欢这个称号的，显得十分亲切，同时也表示跟组内的关系还是很好的。同时，组里面的人因为优秀个人拿到了一个鹅，可能觉得我年龄小，就送我了。😋😋😋。超级开心。
我的同宿舍的舍友也是一位跟我志趣相同的人，给我聊的非常来，而且还是前端，其实跟我岗位差不多，自己也非常幸运能遇到这样的舍友。
除了组员、舍友，自己也认识了挺多同岗位的人，能够认识这么多优秀的人是我的幸运，他们有很多优秀的点让我学习，比如说我们组的优秀个人，答辩的时候真的是滔滔不绝，真的十分佩服，超级羡慕。</description></item><item><title>事件传递与响应</title><link>https://liuzechen.top/skill/2025-07-21-%E4%BA%8B%E4%BB%B6%E4%BC%A0%E9%80%92%E4%B8%8E%E5%93%8D%E5%BA%94/</link><pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-07-21-%E4%BA%8B%E4%BB%B6%E4%BC%A0%E9%80%92%E4%B8%8E%E5%93%8D%E5%BA%94/</guid><description>今天居然是0721诶
第一响应者 事件传递的过程 触发事件后，系统会将该事件加入到一个由 UIApplication 管理的事件队列中； UIApplication 会从事件队列中取出最前面的事件，将之分发出去以便处理，通常，先发送事件给应用程序的主窗口（ keyWindow ）； 主窗口会在视图层次结构中找到一个最适合的视图来处理触摸事件； 找到适合的视图控件后，就会调用该视图控件的 touches(_:with:) 方法； touches(_:with:) 的默认实现是将事件顺着响应者链一直传递下去，直到连 UIApplication 对象也不能响应事件，则将其丢弃。 查找过程 iOS采用hit-test的形式进行遍历
hit-test采用逆序深度遍历的方式找到最前面的视图，然后这个视图 响应者链 当事件发生之后，从触发事件的源头开始，按照一定的顺序对各个视图或者空间进行遍历处理，直到最终被处理或者被丢弃，
传递到下面后，然后往上开始回溯，找到第一个响应者，如果这个响应者不处理，就会通过nextResponder往上走，直到有事件响应。
这个第一响应者就是当前页面要处理消息的第一个Button/Text等，比如说说一个文本框，如果让文本框成为第一响应者，那么他就会弹出来，让用户输入
系统是根据hitTest的内容找到</description></item><item><title>Xcode使用技巧</title><link>https://liuzechen.top/skill/2025-07-16-xcode%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/</link><pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-07-16-xcode%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/</guid><description>常用命令 cmd + shift + j # 在文件中，直接定位到左边的目录 cmd + shift + o # 快速打卡某一个文件 cmd + control + shift + a # 打开git，找凶手</description></item><item><title>德州扑克的玩后感</title><link>https://liuzechen.top/posts/2025-07-12-%E5%BE%B7%E5%B7%9E%E6%89%91%E5%85%8B%E7%9A%84%E7%8E%A9%E5%90%8E%E6%84%9F/</link><pubDate>Sat, 12 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2025-07-12-%E5%BE%B7%E5%B7%9E%E6%89%91%E5%85%8B%E7%9A%84%E7%8E%A9%E5%90%8E%E6%84%9F/</guid><description>昨天，也就是周五，在公司跟同事们玩德州扑克，我是纯萌新，第一次玩德州扑克，但是运气出奇的好，好一次都有two paris（两个对子）甚至是葫芦（三个相同的牌），甚至有两三次都是最后一张牌改变了我的胜负，本来是two paris，结果到后面直接变成葫芦，直接翻牌。最后虽然我虽然是萌新，但是居然赢了同事9块多（一个筹码一分钱，开始时300个筹码，也就是3块钱，最后我成了银行，给别人找钱）。
我从小都吸取老爸的教训，老爸以前赌博输了不少的钱，我记得很深的一次他晚上打麻将，一下子就输了1100多，然后还是继续打，白天的时候赢了800多，但最终也是输了（当时绝对是这个数字，我对这件事记得非常深刻）。
我们虽然玩的是一个筹码一分钱，非常小，但是我每次赢得时候我的心脏都会跳动，非常刺激，这个还是算很小了，要是1块钱、10块钱、100块钱呢？我不敢想象，同事也笑对对我说：虽然你赢了，但是明天你千万别去澳门奥。🤣。赌博真的是抓住了人心里面的弱点，博弈、对抗，还有心理，有的人在这里面倾家荡产，有的人在这里面搞得富得油油，怪不得这么多人会赌博，真的是非常刺激。
妈的，这周五又玩了，赢了21。
不赌怡情，大赌伤身</description></item><item><title>ARM汇编</title><link>https://liuzechen.top/skill/2025-07-10-arm%E6%B1%87%E7%BC%96/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-07-10-arm%E6%B1%87%E7%BC%96/</guid><description>寄存器 ARM一共有33个寄存器，0-30是通用寄存器，31和32是专用寄存器（31是sp寄存器，32是pc寄存器），所以是31个通用寄存器，两个特殊寄存器，当然，还有几个是状态寄存器，
前31个寄存器的访问方式是：
使用X0～X30来访问时，是64位数据 使用W0～W30访问时，是低32位的数据 对于特殊寄存器来说：
32bit的时候，作为栈帧寄存器（stack point,SP）的时候，用WSP来访问 64bit的时候，作为栈帧寄存器（stack point,SP）的时候，用SP来访问 32bit的时候，作为零寄存器（Zero register）的时候，用WZR来访问 64bit的时候，作为零寄存器（Zero register）的时候，用WZ来访问 常用寄存器如下：
X0 ~X7：传递函数的参数，如果有更多参数，则通过栈来传递 X0： 既可以当参数的返回值，又可以当参数的传递 这里的X0，X1可以直接跟msg_Send一样绑定，第一个参数是self，第二个参数是选择子，第三个参数之后就是真正的参数。 SP，上述的栈指针寄存器，维护栈指针，指向栈的顶端。 FP（Frame Point），X29，栈指针寄存器，指向栈的底部 LR （Link Register）X30，链接寄存器，存储的是函数调用完成的返回地址 函数栈为什么知道这个，就是使用LR指针。 PC（Programe Counter）: 程序寄存器，表示的是程序的下一行地址的位置。 X19寄存器：i0S中有很多self这样的标识自身，这个地址就是放在X19上 常用指令 SVC：调一个系统调用 函数 X0-X7放函数的参数， X0作为函数的返回值，如果是结构体的话，那么就将用X8兼容一下 X19基本都是self,基本调一下 函数跳转</description></item><item><title>iOS调试</title><link>https://liuzechen.top/skill/2025-07-09-ios%E8%B0%83%E8%AF%95/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-07-09-ios%E8%B0%83%E8%AF%95/</guid><description>常见的调试命令 expr 变量 | 表达式 // 显示变或者表达式的数值 expr -f h -- 变量 | 表达式 // 16进制格式显示变量或者表达式的数值 expr -f b -- 变量 | 表达式 // 二进制的形式 expr -i -- oc对象 // 等价于 po oc 对象 expr -P 3 -- oc对象 // 上面命令的加强版，会显示内部的数据变量的结构 expr my_struce-&amp;gt;a = my_array[3] 赋值 expr (char*)_cmd // 显示某一个oc变量的方法名 expr (IMP)[self methodForSelector:_cmd] // 执行这个函数 p (IMP)[self methodForSelector:_cmd] // 打印出当前函数的地址 符号调试 在Xcode设置符号断点即可。
如何看某一个数值被XXX更改了，然后看回溯栈？ 使用KVO进行注册，然后监控即可
多线程、网络的情况下，某一个对象的值好久没出来，如何进行测试 直接将对应的对象的地址打印到UILabel里面，然后将UILabel的数值显示到UI上，然后打日志，打印出当前的对象的地址，或者用Lookin看,查看当前的地址</description></item><item><title>iOS视图</title><link>https://liuzechen.top/skill/2025-07-08-ios%E8%A7%86%E5%9B%BE/</link><pubDate>Tue, 08 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-07-08-ios%E8%A7%86%E5%9B%BE/</guid><description>UICollectionView 视图更新位置 写视图的方式千千万万，那么哪一种是最为规范的呢？
在initWithFrame中处理视图的层级，比如说addSubview等，然后处理self相关的，比如说设置背景等 在updateConstraints中更新autolayout视图，用到的View在init中全部加入，如果有的View用不到的话，直接hidden就好了。 setNeedsLayout VS layoutIfNeded setNeedsLayout会调用layoutSubViews方法，对于子视图进行重新布局 限频？ setNeedsDisplay setNeedsDisplay是异步执行的，自动调用drawRect:方法 什么时候需要在 iOS 中调用 setNeedsDisplay？ 就是覆盖了drawRect的时候，才需要这个方法，日常的UI界面已经涵盖了这个方法了，就是已经帮你实现了drawRect了，不需要重写了</description></item><item><title>iOS核心动画高级技巧</title><link>https://liuzechen.top/skill/2025-07-06-ios%E6%A0%B8%E5%BF%83%E5%8A%A8%E7%94%BB%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7/</link><pubDate>Sun, 06 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-07-06-ios%E6%A0%B8%E5%BF%83%E5%8A%A8%E7%94%BB%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7/</guid><description>UIView和CALayer CALayer是图层，仅仅是显示UI界面的，但是UIView包含的东西非常多，而且UIView的性能其实没有显示的性能影响，使用图层关联的视图而不是CALayer的好处在于，你能在使用所有CALayer底层特性的同时，也可以使用UIView的高级API（比如自动排版，布局和事件处理。
layer专门显示动画，绘图，因为macOS和iOS的绘图原理是相同的，但是接触方式是不同的（一个是鼠标点击，一个是触摸），所以这里将其分开，分别维护。比如说CGColorRef为什么有这个，是因为layer是QuartzCore框架，不是UIKit框架里面的。
UIButton的继承：UIButton -&amp;gt; UIControl -&amp;gt; UIView -&amp;gt; UIResponder UUIControl是将复杂的触摸事件封装成了简单的易于使用的控件事件
什么时候使用CALayer而不是UIView mac OS上运行的跨平台程序 使用CALayer的子类 做一些对性能特别挑剔的工作，比如对UIView一些可忽略不计的操作都会引起显著的不同（尽管如此，你可能会直接想使用OpenGL绘图） 但是我觉得还是用UIView可能更加方便，因为视图和视图之间可能要添加，UIView可以很高的添加上去。
使用小结 transform transform伸缩变化的过程中，其实是对anchorPoint开始，然后开始伸缩变化，但是很多时候我想要将某一个组件从左到右开始伸缩，</description></item><item><title>iOS开发配置</title><link>https://liuzechen.top/-configuration/2025-07-05-ios%E5%BC%80%E5%8F%91%E9%85%8D%E7%BD%AE/</link><pubDate>Sat, 05 Jul 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/-configuration/2025-07-05-ios%E5%BC%80%E5%8F%91%E9%85%8D%E7%BD%AE/</guid><description>软件 超级右键 Xcode HomeBrew RVM 安装命令：rvm install ruby-3.1.7 --with-openssl-dir=$（brew --prefix）/opt/openssl@1.1 AeroSpace Terminal plugins=(git zsh-syntax-highlighting zsh-autosuggestions sudo) 软件安装 brew install</description></item><item><title>ChangeLog</title><link>https://liuzechen.top/change-log/</link><pubDate>Tue, 24 Jun 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/change-log/</guid><description> 播客支持mermaid ✅ 初步将播客迁移至github pages，并且使用hugo-xmin作为主题 ✅ 完成github actions的实现 ✅ 修改了hugo-xmin的配置，支持高亮、调节字体大小、完善主题 ✅</description></item><item><title>Effective-Objective-C总结</title><link>https://liuzechen.top/skill/2025-05-10-effective-objective-c%E6%80%BB%E7%BB%93/</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-05-10-effective-objective-c%E6%80%BB%E7%BB%93/</guid><description>书是挺好的，但是翻译有的时候翻译真的有点烂，这里写一下我学习过程中，对例子解析一下。
6 了解属性的概念 这里引出OC和C++是不一样的，C++是使用offset的形式找到对应的数据变量，但是这样可能因为在不同的DLL导致起定义出错而crash，OC中将实例变量交给类对象管理，然后在运行期查找，不直接在编译期确定，可以避免上述的crash。甚至可以在运行期加入成员。
7 在对象内部尽量直接访问实例变量 我写代码的时候，经常有以下问题，一段代码中可以使用self.xxx或者_xxx进行访问，其中使用self.xxx可以使用懒加载，但是这里好像更推荐使用直接访问实例变量，也就是_xx这样，原因如下：
不会触发信息派发，那么就不会走msg_Send那一套，那么速度就会快一些 如果直接访问实例变量，那么就不会触发KVO（也就是键值观察）？ 但是有时候可能使用懒加载，那么这时候可能就需要self.xxxx了，所以就有一个折中，如果是在写入的话，那么就通过设置方法self.xxx来做，如果是读取，那么就直接访问。 具体例子 在26年6月左右，我们组遇到了一个 Crash 问题，具体问题是：某一个对象在 dealloc 的时候，使用 self.xxx 访问了当前的局部变量，而 self.xxx 会实现懒加载，会调用 self.xxx 的 getter 方法，而 getter 方法中使用 weak_sellf 实现了一个 Block，导致这里出现Crash
原因：对象在 dealloc 的过程中，对象此时正在析构，会将对象所指向的的 weak 都置为 nil，但此时又 weak 了一下 self，导致weak 的引用表状态不对，所以导致了 crash，
解决方案：在 dealloc 中使用实例变量访问（即使用_xxxx 访问）
12 理解动态转发 这篇讲得不错，其中的代码样例。
先看自己能不能解决，往自己对象里面加入方法，然后再跑一遍消息转发 自己不能解决，就让别的对象解决，看其他对象能不能能处理，比如说这个self的一些子类可能会处理这个self的方法 forwardingInvocation直接兜底，要么吃掉，要么转发其他对象，要么换成其他消息，如果怎么都不行最后直接doesNotRecognizeSelector报错。 17 实现description方法 顾名思义，主要是用于调试用的，在NSLog等控制台中进行调试，
带上对象的地址 带上对象的属性 这里有一点，NSLog如果打印一个对象的话，那么调用的就是description方法，所以如果在description方法里面调用NSLog的话，那么就会发生死递归，这里要特别注意一下。</description></item><item><title>我的实习之旅</title><link>https://liuzechen.top/posts/2025-04-05-%E6%88%91%E7%9A%84%E5%AE%9E%E4%B9%A0%E4%B9%8B%E6%97%85/</link><pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2025-04-05-%E6%88%91%E7%9A%84%E5%AE%9E%E4%B9%A0%E4%B9%8B%E6%97%85/</guid><description>不知不觉，自2024年5月13日到现在，马上就实习一年了，写一篇随笔记录一下
我记得很清楚，大三下找工作的时候，我有且仅有一家公司，也就是腾讯云智oc了，其他的全部挂了，（再次特别感谢马哥&amp;rsquo;收留&amp;rsquo;了我），所以在2024年5月12日下午打完CCPC邀请赛之后，我就坐高铁（那也是我第一次坐高铁）屁颠屁颠来到了武汉，5月13日周一开始我的实习之旅。
腾讯云智实习 这是我第一次实习，一开始还弄了个笑话：在clone代码的时候，下意思先fork了一下仓库，然后再拉取，其实自己本来就是developer的权限了，直接clone下来就好了。🤣，笑死。
好像也并不是那么好笑
那是我最快乐的实习时光了，因为当时除了了我，还有两名实习生，我们三当时坐在一起，因为ld，mt都是在腾讯本部，也就是在深圳，没有人管我，所以当时我们很轻松，也认识了一些好哥们，对比现在，那都是玩的，总之，相对来说，确实很开心
但是本部的ld还有一位也来武汉这边了，教我了挺多道理，也教了我挺多技术，当时ld亲自在我身后，手把手教我使用WinDbg，我都有点害羞了，在大学的时候，都是我教别人，别人很少教我的，记得当时是简单使学习了WinDbg,如何在一个module上打断点，当模块加载之后断住，然后分析代码，虽然我之后没有从事Windows开发方向，但是借此机会，也学习了很多Windows上的东西。秋招面腾讯IEG的时候，面的非常顺章，面了很多Windows相关的问题，都回答出来了，不过因为没有hc，导致二面虽然过了，三面没约就直接挂了，当时面试的时候那个面试官感觉是非常想要我的，哎，呜呜，
网易，滴滴的实习 在结束了腾讯云智的实习之后，我开始了秋招面试，面了很多，但是挂的也很多，其中我先收到了网易互娱的实习转正和滴滴的offer，在网易的时候，感觉自己太差，转正不了，于是就干了一个多月辞职了，然后在家呆了一段时间，去了滴滴实习，结果去了不到一周，我在TME，也就是腾讯音乐的排序offer oc了，所以又辞职了，去了TME。所以说我在网易和滴滴的时间其实是非短暂的，但是遇到了很多不错的人，也收获到了很多。
我在网易的时候的mt跟我同姓，我自认为感觉他是一个话痨（这里没有任何贬义），我感觉我俩说话的时间都比我写代码的时间多（前人的经验也告诉我很多道理。）印象深刻的几句话是：
大学是你们最轻松的一段时间了，等上了班时间就很少了 大四，要么你在学校里面学技术，多学一些技术，要么你可以去外边旅游旅游，别待在宿舍或者家里面，没有学习的氛围。 谈个女朋友，大学里面谈女朋友比较纯粹 火哥（指上面的mt）说的确实不错，上了班感觉时间确实少了很多，要么学技术，要么旅游，别那么焦虑。至于第二点，大学里面认识的npy一双手都数得过来，没有感受到。
时间过着确实很快，当我整理的写下这段话的时候，我已经毕业了，然而npy并没有谈到
腾讯音乐实习 前面的哥们都放弃offer了，然后就轮到我了，因为毕业论文的原因，我只实习了一个月，导师是我的一面面试官，二面是我的ld + 1,（二面的时候感觉自己纯是备胎，虽然是过了，但是也是为了排序，怕前面的人不接offer）。于是我就来到了深圳。
哎，来到深圳，上来就给我一个社会教训，租了个甲醛房，后续去了维权，去了相关服务中心，然后要回了1k1,但是也损失了3k多，哎，随后租了个自如，小了点，只有7平，但是没有甲醛的味道，价格也还行，1k6，于是就住了下来。
来到这里，压力瞬间增加了很多，因为我是iOS的零基础，所以我要画很长时间去学习，几乎每天都是9点多才走，这不，刚好和前面的照应上了，属于自己的时间少了很多。，但是也学了很多，原来在云智的时候，135晨会我都觉得多，因为不知道汇报什么，这边天天晨会，所以压力很大，但是后面还是适应了（是不是搞iOS的适应力都很强？），哎，如今为了毕业论文，离职了，倒是也放松了一下，正式入职的时候，可能就要调整调整了。
这里说搞iOS的适应力都很强是因为Xcode太傻逼了
实习的时候认识了很多人，我每次离职的时候，都会不自觉流泪，因为他们都是跟一样，都是搞程序的，算是志同道合的人了，相比于亲戚来说，聊得点更多，共同点更多，可能以后真的没有时间去见面了，所以说有些😭，哎，人生亦是如此，都是在不断地相见与离别。
总结一下，在实习的时候，我很焦虑，不知道以后的道路，但是我的各个导师，我认识的人都对我说，别管外界，做好自己就好，不要焦虑，因为你只能改变你自己，不能改变外界。做好自己就好了。希望我以后的程序员生涯是如此、人生道路亦是如此。</description></item><item><title>iOS Runtime</title><link>https://liuzechen.top/skill/2025-03-24-oc-runtime/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/skill/2025-03-24-oc-runtime/</guid><description>之前学了一下Objective-C的Runtime,发现学的不是那么深刻，所以这里写一篇文章，算是边写边学了。
概念 OC中加入了很多新的概念，其中主要好似有instace object和class object和meta object，主要是有以下区别，
instace object(实例对象)：instance示例对象是通过alloc出来的对象，每次使用alloc都会产生新的instance对象。 class对象(类对象)：对于每一个类，内存中有且只有一个类对象。 meta-class(元类对象)：对于每一个类来说，内存中有且只有一个类对象 这里说是对象，其实是因为oc everything is object，所以这里抽象成对象了，如果是C++，那么其实就是类，零成本抽象，其实没有那么多区别
对于上述对象中存储的东西，有以下区别。
实例对象（instance object） isa指针：指向的是类对象 对象中的成员变量 类对象（class object） isa指针：指向的是元类对象 superClass指针：指向的是他的父类，是类对象的父亲，如果到顶了，就是nil 类的属性信息（@property），类的对象方法信息（method &amp;lsquo;-&amp;lsquo;开头的方法）,类的协议信息（protocol）和类的成员变量信息（ivar）等。 元类（meta object） isa指针 superClass指针：指向他的父类，也就是元类对象的父亲，不同的是，如果到顶了，那么这里指向的是基类的class 类的方法信息（也就是+开头的方法） 以下是对象的相关关系
消息发送 OC中的调用方法是在Runtime运行期展开的，而不是像C/C++一样在编译期就确定了，所以与C++一样调到某一个地址就可以，大致的消息转发流程如下
先通过isa指针找到对应的类对象，或者是找到对应的meta-class 如如果是实例对象（instance object）调用，那么就找到对应的类对象（class object），如果是类方法调用，先找到对应的元对象（meta-class object） 如果当前找到了，那么就直接执行对应的方法就行了 如果没有找到，那么就通过类对象或者实例对象的superClass指针往上找，就是沿着他的父类找，一直往上找 如果最终找不到，那么就会Crash(当然，也会有补救错误) 这里有一点不同的是，注意到meta-class的superClass指针指向的是基类的类对象，那么这时候还是往基类的类对象找一下，调用一下，如果找不到，就crash。 补救方法 待补充</description></item><item><title>找实习要注意什么</title><link>https://liuzechen.top/posts/2025-03-23-%E6%89%BE%E5%AE%9E%E4%B9%A0%E8%A6%81%E6%B3%A8%E6%84%8F%E4%BB%80%E4%B9%88/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2025-03-23-%E6%89%BE%E5%AE%9E%E4%B9%A0%E8%A6%81%E6%B3%A8%E6%84%8F%E4%BB%80%E4%B9%88/</guid><description>现在学弟们都开始找实习了，遂根据我的找实习的经历，写一篇关于找实习的文章 当然，以下更多是关于计算机专业的。其他专业也可以参考参考 以下内容纯属个人见解，仅仅是希望给大家提供一份帮助，如果有不同意见，欢迎一起讨论。 投递相关 定要海投，对于大部分来说（尤其像我一样，四非学历），不是想去哪一个公司就去哪一个公司的，面试的时候有很大的除技术之外的运气成分，所以一定要海投，要所有的公司都要投递一遍，可以打开Boss直聘这样的软件，然后猛猛投递，有面试的话，就开始面试，面过了再选。
在水群的过程中，我发现学弟投递简历的时候更想要投递小厂，对大厂比较畏惧，可能是因为技术难度等方面有点高，所以说畏惧投递大厂。但是，大厂之所以是大厂，不光是因为薪资待遇比小厂的要好，更重要的是大，他招的人多啊，招收的人多代表有更多的机会，而且很多厂是可以面挂重新捞人的，所以说，这个不要担心。
面试流程 一般互联网公司是（2 或者 3 + 1面，也就是2到3次技术面 + 1次hr面
网上投递： 主要是官网和内推 官网：直接在各大厂的官网上投递，如果不知道什么公司可投，可以看牛客上别人投递的公司 内推：找别人的内推码，填上去，虽然可能用处不大，但是肯呢个还是有一点作用。（最主要的是你进公司了，内推你的人有米赚（bushi. 技术面： 对于一面来说，大概率是你面试的组的一个员工来面试，相对来说，面试的时候，比较简单，侧重于面试的计算机八股 + 基础知识，只要准备好，过的概率还是非常高的 二面大概率是你的ld了，也就是这个组的组长，面试的时候侧重于你的项目水平，要求更高，对于项目方面一定要准备好，我在二面翻车的几率非常高，几乎都是二面挂的 如果有三面，那么可能是你的+2，在我的面试情况中，跟二面的相关内容是差不多的，好好准备就行了。 当然，以上是大概率，也有可能不是，比如对我来说，有一次面试一面二面是同一个人，还有一次一面是我的导师，二面就是我的+2了（ld的ld）。 hr面： 基本就是问你的个人情况，基本问题不大，如果你在hr面挂了，可能就是因为被排序，有人面的比你更好所以挂了。 必要技能 技术 众所周知，面试的时候，虽然有一部分运气因素之外，但是最重要的还是自己的技术水平，以我为例，实习和校招的面试的时候，因为我的岗位不同，所以考察了一下内容
计算机网络/操作系统 这些就比较多，具体可以看各大博主整理的相关资料。 各个语言的基础知识，： 如C++中的虚函数表，sizeof一个类是多大，inline是干什么的。这些基础问题 如果是其他的Java语言，也有对应的面试题 项目： 你的项目的效果是什么，为什么选择这个项目，有什么量化指标，你在做这个项目中遇到了什么问题，这个问题你是怎么解决的。 根据你选择的岗位不同，可能考察的也会有所不同 比如我在面试的时候，考察过Windows相关的知识点，比如说COM编程，MFC，DLL相关,Dump文件，WinDbg调试相关，也考察过汇编，读相关汇编，然后看这段代码的意思等问题。如果是其他岗位，可能就没有这些问题。 算法题 其实大部分厂的算法题不是那么难，认真准备还是能写出来的，其主要出的都是链表题，主要是leetcode上面的hot100题目，在面试前最起码都过一遍，最好是能功利一点，能&amp;rsquo;背&amp;rsquo;下来，这个背是加引号的背，因为面试的时候紧张 + 时间短，不像打acm一样，有五个小时的时间，这个时间很短的，所以要看到题目，就能直接写出来是最好的。 另外，笔者自己是打acm的，一般是用C++写题，这时候很多ap(acm批，简称ap)就喜欢#define &amp;lt;bits/stdc++.h&amp;gt; 然后直接 using namespace std; 我认为这个在面试的时候，是非常不好的，因为面试官没有打过算法竞赛，而且会看你除了算法题写的对不对，还有你在写算法题的时候的工程化，规范化。按照写工程的思路去写算法题。 不要使用万能头文件和using namespace std; 写代码的时候要有缩进，要规划化。 代码命名要更加的准确，起一个int类型的名称的时候int size 都比 int a 这样的命名好。 题外话：我第一段实习结束的时候，我问了我的导师（也就是我一面面试官），为什么当时把我招进来，他说：看你在大学的时候打了这么多比赛，拿了挺多奖，面试的时候代码写的也挺好的，所以就要你了，泪目，这是我大三下找实习中为数不多的面试中唯一过的面试，然后就去实习了。
沟通能力 面试本质上就是沟通。是你选择这家公司，然后公司选择了你，是一个双向选择的过程。如果你的技术很好，那么在面试的时候无法表达，无法将你想要表达的信息传递给面试官，面试官觉得驴唇不对马嘴，也是不行的，这是我面试的时候，某一个面试官在我知乎上留的相关言论，也作证了这个观点，同样，在工作的时候，沟通能力也是非常有必要的，如何正确表达，是非常重要的。对此我觉得有以下建议：
面对一道问题的时候，自己将要表达的内容说出来，然后看相关内容是否流畅，是否清晰，能否正确表达出来。因为有心里面想的，说出口可能就出错了，这个要在面试前好好准备 专业术语一定要表达清楚，以我为例，有一次私钥和公钥这些专业术语就没记住，其实自己是知道的，但是面试的时候可能会突然紧张，突然就忘记了，所以这个也要好好准备。 一定要流畅表达，可能面试官是不懂你这个的，但是可以通过的你的表达，看你是否是真的掌握这个，（自己掌握的和心虚的还是有差别的，（其实就是唬住面试官。 题外话：我自己的沟通水平简直是一tuo,很多东西也无法表达清楚，可能这篇文章也是如此qwq，实习结束的时候，ld也对我语重心长的说在以后得职业生涯中，提高提高自己的沟通能力，真的泪目┭┮﹏┭┮。
面试成功的因素不光有以上原因，可能还有对应的运气成分，面试失败不要紧，从面试中吸取教训，多复盘，多面试，好好准备下一次面试。
其他话术 面试的时候有很多话术，比如说你能否马上到岗实习，能实习多长时间，对于这个，要尽量答应对方的要求，比如说实习六个月，你就说实习六个月以上，即使你不能实习六个月以上，你也要说，你要确保你先过这个面试，然后再选，虽然有点不仁道，但是确实这样的。一定要确保你面试过了，将主动权掌握在自己的手上，然后再选。</description></item><item><title>计算机大一新生入门指南 先輩の最強発言</title><link>https://liuzechen.top/posts/2024-08-24-%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%A7%E4%B8%80%E6%96%B0%E7%94%9F%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97-%E5%85%88%E8%BC%A9%E3%81%AE%E6%9C%80%E5%BC%B7%E7%99%BA%E8%A8%80/</link><pubDate>Sat, 24 Aug 2024 00:00:00 +0000</pubDate><guid>https://liuzechen.top/posts/2024-08-24-%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%A7%E4%B8%80%E6%96%B0%E7%94%9F%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97-%E5%85%88%E8%BC%A9%E3%81%AE%E6%9C%80%E5%BC%B7%E7%99%BA%E8%A8%80/</guid><description>临近2024年新生大一开学，已经大四的我想写一篇送给大一新生入学前和入学之后学习编程的文章（蹭流量罢了）
如何解决问题 到了大学，信息没有高中那么闭塞，你可以通过任何方法区解决你手上的问题，其中最牛逼的伙伴是：史上最牛逼的搜索引擎：谷歌搜索！地址是：https://www.google.com 什么？你不知道怎么上，坏了，我也不知道（
不管怎么样，一定要登上这个网站，代替某些搜索引擎，他的搜索效率是非常高的，在这边上面搜索很多情况下都可以解答，如果上不了google,可以使用bing代替进行搜搜，总之，不要使用xx搜索引擎。
如何搜索 不会搜索是不行的，google搜索毕竟是国外网站，如果说你搜索中文搜索不出来，可能出现偏差，那么可以使用英文搜索，可以先使用翻译软件（非常强大的翻译软件：https://www.deepl.com/translator），翻译能力非常强，翻译出来的东西贴到google上，立马就能出结果，在搜索中，下面这个网站的专业程度是非常高的（我很多问题都在这个网站上找到答案）
Stack Overflow - Where Developers Learn, Share, &amp;amp; Build Careers Stack Overflow的专业程度非常高，很多问题都有解答，因为是英文的缘故，可以翻译成中文，我使用的插件是：https://immersivetranslate.com/zh-Hans/，可以一键中英文翻译，非常不错。
更新：我非常建议大家使用大模型去搜索和解题，他会给你一个&amp;quot;引子&amp;quot;，照着这个线索去搜索下去，比如目前最简单的C语言问题，估计直接复制粘贴到ChatGPT这样的大模型中就会有对应的错误提示和更改后的代码。
提问的艺术 如果你上述方式（问Google等搜索引擎）等解决不了，你可以问你身边的人或者群友，但是你可能需要提问的艺术：请谨记下列的几条建议，对于大学中学习是非常重要的。
在询问之前要在网络上进行搜索相关的问题，看自己能不能解决掉 SSCCE: Short, Self Contained, Compilable, Example：代码要简短，并且可以完整运行 将代码粘贴到相关网站(在线剪贴板)上进行发送，相关信息也要发送，不要使用手机拍照，不要进行截图 告知相关平台，并且如果有错误信息，也应该贴出来 这个是非常非常重要的！！ 毕竟每一个人的时间都是宝贵的。
举个知乎例子：问题链接：大佬们编程一直是这样吗？？，这个问题已经很好的表明了如何去学习，如何去提问了，（这就是先天编程圣体）
竞赛 大学生高质量竞赛还不少，比如说ACM或者CTF，但是这些竞赛你都需要投入大量的精力和时间去学习，而且你要长时间投入到其中，而且竞赛甚至是高投入低回报的竞赛，我觉可以在大一的时候了解一下其中是干什么的，权衡一下利弊，看是否是真正的喜欢，然后再决定，当然，如果说如果是ppt大赛，我建议就不要参赛了，浪费时间，并且没有收获。
学习资料 首先：编程是一门很注重实践的课程，你需要拿起你的键盘，敲一敲键盘，去写相关的代码。
对于新手来说，我认为看视频还是比较好的学习方法，但是视频的信息量很小，他讲了半天还不如你写代码，然后实践一下呢，所以对于刚入门的同学来说，我觉得看别人的视频还是不错（这里我就不推荐了，我记得我入门的时候是看比毕向东的Java入门，但是已经很长时间了，这里就不推荐了），可以去B站搜基础视频。
之后就可以看书，我的方向是C++客户端方向（俗称糊图UI仔），我看的书籍也不是很多，以下是我看过的，觉得不错的书籍：
深入理解操作系统(csapp)：入门书籍，相当于一本目录，非常不错 Windows核心编程： （mt推荐给我看的，我觉得不错，讲授Windows相关的开发知识） 程序员的自我修养(链接，装载和库)：书如其名，链接，装载相关 操作系统导论：讲述虚拟化、并发和持久性三个方面的，很不错 网站 希望这些网站能够帮到你：
Google 搜索网站 Stack Overflow - Where Developers Learn, Share, &amp;amp; Build Careers 高质量编程回答网站 DeepL翻译：全世界最准确的翻译 翻译网站，可以在这上面翻译，然后放到搜索网站上搜索 cppreference.com C++相关的知识 GitHub 全球最大同性交友网站 MeteorZ （我的知乎，（夹带私货） 在线剪贴板 剪贴网站，分享代码用的 工具 学习编程，肯定要有对应的编译器和编辑器等，以下的工具都是免费的，请不要发冤枉钱！并且我还会附上地址，要从网址上下载对应的软件，以防上当受骗</description></item><item><title>关于</title><link>https://liuzechen.top/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://liuzechen.top/about/</guid><description>个人简介 客三消之iOS开发从业者 C/C++、Linux 爱好者 古法编程爱好者、古法编程非物质遗传承人（bushi） 联系方式 你可以从以下方式找到我
Meteor-Z liuzechen.coder@qq.com Meteor_Z7 MeteorZ 相关分享 如何写一份漂亮的简历 (毕业的时候，给学弟做的分享，里面的内容以现在的眼光来说，还是有欠缺的，不过也可以参考参考) 计算机大一新生入门指南-先輩の最強発言 找实习要注意什么</description></item><item><title>减肥</title><link>https://liuzechen.top/%E5%87%8F%E8%82%A5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://liuzechen.top/%E5%87%8F%E8%82%A5/</guid><description>2025年11月29日，我下定决定要减肥。
[toc]
我为什么要减肥？ 写这些文章的时候，我目前身高168.5cm，体重87.8kg，BMI 30
为了健康：应届生岗进入公司，进行了体验，发现自己虽然没有脂肪肝等重度问题，（毕竟目前我挺年轻）但是我的一些指标却已经有了增长趋势。如胆红素升高、血脂异常、肥胖（写这篇文章的时候我体重87。8kg左右，已经是轻度肥胖，并且在体检的时候，我体重为83kg左右。。。）了， 为了更好看的身材，目前自己看自己，真的像油腻大肥宅，可能为了以后更好的找女朋友？我下定决定减肥 自高中之后，我的肠胃就有比较严重的问题，减肥之后，我的肠胃功能是否有一定的改善？ 为了成为我这具身体的主人
吃饭吃什么 无糖豆浆 鸡蛋，两个 早餐 天然的食物：不吃深加工的食物 不吃榨汁的食物， 多吃鸡蛋，摄入足够的蛋白质， 玉米吃甜玉米 细嚼慢咽，吃饭不能急，吃饭细嚼慢咽可以将饱腹信号传递给大脑 午餐 麦麦 吉士汉堡包、原味板烧鸡腿堡 零度可乐 职场中我应该注意什么 平时周一到周五，我需要上班，可能也没有过多的时间减肥
对于自己来说 不吃夜宵 跑步 太胖了，我跑不起来，主要是有以下几点
先快走，不跑步，跑步目前对我来说，太伤身体了，目前先定走路20-30分钟左右 快走的定义大致是5.0-6.0左右，然后持续30分钟左右 心率保持117–146左右，取个中间值，130吧 然后慢跑，是7.0-8.0左右</description></item><item><title>常用Tips</title><link>https://liuzechen.top/tips/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://liuzechen.top/tips/</guid><description>平时开发用的多的Tips，总结了以下
Chiesl touch .lldbinit open .lldbinit command script import /usr/local/opt/chisel/libexec/fbchisellldb.py Clang-Format gist链接
Git设置 git config --global user.name &amp;quot;meteor&amp;quot; git config --global user.email &amp;quot;xxxxx@xx.com&amp;quot; ssh-keygen -t rsa -C &amp;quot;上面的邮箱&amp;quot; Windows神秘代码 slmgr -ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr -skms kms.0t.net.cn slmgr -ato Windows相关问题 换一个好用的梯子 utools上搜网络重置 关闭网络代理后，在cmd上直接ipconfig /flushdns 来刷新缓存，很奏效 MAC显示屏开启 HiDpi bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi.sh)&amp;quot;</description></item><item><title>总结</title><link>https://liuzechen.top/summarize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://liuzechen.top/summarize/</guid><description> iOS开发资料整理 iOS-Core-Animation-Advanced-Techniques iOS安全wiki 深复制、浅复制、copy、mutableCopy OC语言 事件传递和响应链（Responder Chain） 深入理解 RunLoop dyld：OS X 上的动态链接 性能优化合集 iOS 保持界面流畅的技巧 Coding Guidelines Runtime 线程编程指南（Apple 官方文档） iOS 组件化方案探索 - Bang神总结 iOS 应用架构谈 · 开篇 Category 特性在 iOS 组件化中的应用与管控 iOS应用架构谈 view层的组织和调用方案 小篇章 论MVVM伪框架结构和MVC中M的实现机制 iOS的MVC框架之模型层的构建 iOS的MVC框架之控制层的构建(上) iOS的MVC框架之控制层的构建(下) objc-MVVM 介绍 深入iOS系统底层之crash解决方法 （objc_msgSend相关） 深入解构objc_msgSend函数的实现 iOS疑难Crash的寄存器赋值追踪排查技术 货拉拉iOS疑难Crash治理-系统键盘语音 iOS疑难Crash-_dispatch_barrier_waiter_redirect_or_wake 崩溃治理 iOS疑难Crash-iOS18.0+ BackBoardServices exit 崩溃治理 司机端稳定性治理和性能优化实践, crash分析视频 货拉拉iOS疑难Crash治理-TTS problem iOS 17 给 iOS 中高级求职者的一份面试题解答！ Instruments 性能检测 Xcode 非开发者账号真机调试教程 iOS 核心动画高级技巧 iOS CoreAnimation 专题 原理篇（一）CALayer 与 UIView 之间的关系 原理篇（二）UIView block 动画实现原理 iOS CoreAnimation专题——技巧篇（二）CAShapeLayer with Bezier Path - Layer世界的神奇画笔 iOS CoreAnimation专题——技巧篇（一）CADisplayLink –同步屏幕刷新的神器 iOS CoreAnimation专题——技巧篇（三）Layer Masking - 图层蒙版 iOS CoreAnimation专题——实战篇（一）惊艳的进度条效果实现 这一篇太骚了 Objective-C编程 iOS编程(第四版，也就是oc版本) iOS网络高级编程：iPhone和iPad的企业应用开发 Objective-C高级编程: iOS与OS X多线程和内存管理 深入解析Mac OS X &amp;amp; iOS操作系统 iOS应用逆向与安全 高性能iOS应用开发 九阴真经：iOS黑客攻防秘籍</description></item></channel></rss>