avatar
文章
36
标签
47
分类
10
首页
归档
分类
标签
关于
小蜗牛的壳
首页
归档
分类
标签
关于

小蜗牛的壳

iOS runtime 基础理论
发表于2025-02-06|iOS
iOS的runtime分为三个阶段:消息发送、动态方法解析和消息转发。 首先,我们来看消息发送阶段。当我们在代码中通过[]给对象发送一个消息时,实际上就会转化为对objc_MsgSend()函数的调用。这个函数首先会检查消息接收者是否为nil,如果是nil,则直接返回nil。然后,它会从方法缓存中查找对应的方法。如果找到了,就直接调用这个方法。如果没找到,它会递归地在父类的方法缓存列表和父类的方法列表中查找。如果整个过程下来都找不到需要调用的方法,就会进入动态方法解析阶段。 动态方法解析阶段是一个非常重要的过程,它允许我们在运行时动态地添加或修改方法。当Runtime在方法缓存和父类中都无法找到对应的方法时,它会调用resolveInstanceMethod或resolveClassMethod函数来尝试动态地解析这个方法。如果这些方法返回YES,表示已经成功解析了方法,Runtime会再次尝试发送消息。如果返回NO,表示解析失败,Runtime会进入消息转发阶段。 消息转发阶段是对象接收到无法处理的消息时的最后一道防线。在这个阶段,Runtime会尝试通过其他途径来找到可以...
iOS 复习思维导图
发表于2025-02-04|iOS
1.UI视图相关面试问题思维导图 2.Objective-C语言特性相关面试问题 3.Runtime相关面试问题 4.内存管理相关 5.Block相关 6.多线程相关 7.Runloop相关 8.Network相关 9.DesignMode相关 10.Framework相关 11.Third-party Libraries相关
PLC 基础知识
发表于2025-02-04|工具
可编程逻辑控制器可程序化逻辑控制器(programmable logic controller,简称PLC),一种具有微处理器的数字电子设备,用于自动化控制的数字逻辑控制器,可以将控制指令随时加载内存内储存与执行。可程控器由内部CPU,指令及数据存储器、输入输出单元、电源模块、数字模拟等单元所模块化组合成。PLC可接收(输入)及发送(输出)多种型态的电气或电子讯号,并使用他们来控制或监督几乎所有种类的机械与电气系统。 最初的可编程序逻辑控制器只有电路逻辑控制的功能,所以被命名为可程序逻辑控制器,后来随着不断的发展,这些当初功能简单的计算机模块已经有了包括逻辑控制,时序控制、模拟控制、多机通信等许多的功能,名称也改为可程控器(Programmable Controller),但是由于它的简写也是PC与个人电脑(Personal Computer)的简写相冲突,也由于多年来的使用习惯,人们还是经常使用可程序逻辑控制器这一称呼,并在术语中仍沿用PLC这一缩写。 在可程序逻辑控制器出现之前,一般要使用成百上千的继电器以及计数器才能组成具有相同功能的自动化系统,而现在,经过编程的简单的...
无标题
发表于2025-02-02
Cursor 编辑器学习指南(AI生成)目录 简介 为什么选择 Cursor 主要特性 安装和设置 基本使用 高级功能 使用技巧 总结 简介Cursor 是一款革命性的代码编辑器,它集成了 AI 辅助编程功能,能够帮助开发者更高效地编写代码。这款编辑器基于 VS Code 构建,继承了 VS Code 的优秀特性,同时添加了强大的 AI 功能。 为什么选择 Cursor AI 驱动的编程体验 智能代码补全 自然语言转代码 代码解释和优化建议 熟悉的界面 与 VS Code 相似的界面 支持 VS Code 插件 平滑的学习曲线 主要特性1. AI 代码生成 通过自然语言描述生成代码 智能代码补全和建议 自动代码重构 2. 代码解释 详细的代码注释生成 复杂代码逻辑解释 代码优化建议 3. 多语言支持 支持主流编程语言 智能语法高亮 语言特定的代码提示 安装和设置 下载安装 访问官方网站 cursor.so 下载对应操作系统的版本 按照安装向导完成安装 初始配置 登录账号 配置 AI 功能 设置编辑器主题和快捷键 基本使用常用快捷键 Ctrl...
http协议返回码
发表于2018-07-16|工具
http的返回码看来最经常用到的,记录一下,方便日后查阅 1开头的http状态码表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2开头的http状态码表示请求成功 200 成功处理了请求,一般情况下都是返回此状态码; 201 请求成功并且服务器创建了新的资源; 202 接受请求但没创建资源; 203 返回另一资源的请求; 204 服务器成功处理了请求,但没有返回任何内容; 205 服务器成功处理了请求,但没有返回任何内容; 206 处理部分请求; 3开头的http状态码重定向代码,也是常见的代码 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。 301 (永久移动) 请求的网页已永久移动到新位置。 ...
markdown语法
发表于2018-07-14|工具
markdown的使用很重要,但也不是天天都用,总是使用的时候遇到各种忘,记录在这,方便后续查阅 TitlesAs we started writing a markdown document, we need to add a title and some sub-headers. Markdown supports two styles of headers, Setext and atx. Setext-style headers are “underlined” using equal signs (for first-level headers) and dashes (for second-level headers). For example: 12345This is an H1=============This is an H2------------- Any number of underlining =’s or -’s will work. Atx-style headers use 1-6 hash characters at the ...
@synthesize和@dynamic
发表于2018-07-14|iOS
发现自己对property中synthesize和dynamic的用法这么陌生,找到一篇挺不错的博客 原文链接:https://www.jianshu.com/p/c883687c6405 @property有两个对应的词 一个是 @synthesize,一个是 @dynamic。如果 @synthesize和 @dynamic都没写,那么默认的就是@syntheszie var = _var; @synthesize@synthesize表示如果属性没有手动实现setter和getter方法,编译器会自动加上这两个方法。 @dynamic@dynamic 告诉编译器:属性的 setter 与 getter 方法由用户自己实现,不自动生成。假如一个属性被声明为 @dynamic var,而且你没有提供 @setter方法和 @getter 方法,编译的时候没问题,但是当程序运行到 instance.var = someVar,由于缺 setter 方法会导致程序崩溃;或者当运行到 someVar = var 时,由于缺 getter 方法同样会导致崩...
injection
发表于2018-07-02|工作
injection 注入方式 12345678- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {#if DEBUG [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load]; [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load]; [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle&...
lint的基本概念
发表于2018-06-22
最近在捣拾组件化的一些工作,把工程项目的三方引用和模块,通过cocoapods管理起来 用到了这么一行命令 pod spec lint 或者 pod lib lint 就很好奇命令的含义,简单查阅,这是pod命令,对于podspec文件的一种静态代码分析 lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。 lint检查C程序中潜在的错误,包括(但不限于)可疑的类型组合、未使用的变量、不可达的代码以及不可移植的代码。lint会产生一系列程序员有必要从头到尾仔细阅读的诊断信息。使用lint的好处是: 1.它可以检查出被编译器漏掉的错误; 2.可以关联很多文件进行错误的检查和代码分析,具有较强大灵活性. lint可以检查的错误类型大体如下: 可能的空指针 在释放内存后使用了指向该内存的指针 赋值次序问题 拼写错误 被0除 失败的case语句(遗漏了break语句) 不可移植的代码(依赖了特定的机器实现) 宏参数没有使用圆括号 符号的丢失 异常的...
iOS设备的CPU架构
发表于2018-06-18|iOS
模拟器:4s-5: i3865s-7 Plus: x86_64 真机(iOS设备):armv6: iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)armv7: iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2armv7s: iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)arm64: iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3
1234
avatar
Patrick Huang
记录自己作为程序员的每一点进步
文章
36
标签
47
分类
10
Follow Me
公告
因为慢,所以能欣赏一路的风景
最新文章
从 PC 时代到移动互联网,再到 AI 时代:硬件与技术如何改变我们的生活2026-11-01
线下会议录音系统的开发复盘:八条可复用的工程实践2026-11-01
从录音到纪要:线下会议音频记录与整理的最佳实践2026-11-01
个人博客搭建工具全面对比:从静态生成器到托管平台,怎么选才不后悔2026-11-01
AI时代的生存手册:如何克服这个时代带来的问题2026-10-28
分类
  • Linux1
  • iOS10
  • 博客4
  • 工作1
  • 工具5
  • 工具使用1
  • 生活2
  • 设计模式1
标签
建站 闲扯 捣拾 进阶 编码规范 Cursor 效率 笔记 会议 私有化部署 GitHub Copilot 思考 博客 PC 编程工具 录音 Hexo 工作流 milestone 架构设计 毕业 Claude Code Hugo 工程实践 日常 GitHub Pages WordPress 心得 快捷键 下载 Astro 硬件 命令 转写 移动互联网 第三方库 基础 语音识别 随笔 工具
归档
  • 十一月 2026 4
  • 十月 2026 3
  • 五月 2025 1
  • 四月 2025 1
  • 二月 2025 5
  • 七月 2018 4
  • 六月 2018 2
  • 三月 2018 1
网站信息
文章数目 :
36
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By Patrick Huang框架 Hexo 8.1.2|主题 Butterfly 5.7.1.260810