自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 [iOS原理] Block的本质

“心理史学……盖尔·多尼克将其定义为数学的一个分支,专门处理人类群体对特定的社会与经济刺激所产生的反应……”“在这门学科的定义中,隐含着一个假设,即作为研究对象的人类汇集必须大到足以用统计学的方法来处理。集结的人数由许许多多的‘阿西莫夫系数’(Asimov coefficient)决定。群体越大,预测的准确性就越高。”—— 摘自《银河百科全书》第116版

2025-12-14 22:23:38 843

原创 block的用法

哈利谢顿最后失败了,那我们呢?

2025-12-07 20:12:16 670

原创 手势识别器内容

简单总结手势识别器相关内容

2025-12-01 18:40:21 683

原创 LLDB进阶:使用命令行进行检查

LLDB 是一个命令行调试环境,功能类似于 GDB。LLDB 为 Xcode 提供了底层调试环境,在调试区域内设有控制台窗格,方便直接访问 Xcode IDE 环境中的 LLDB 命令这篇简要介绍 LLDB 的语法和命令特性,介绍命令别名功能的使用,并介绍 LLDB 的帮助系统关于基础部分可以阅读我之前的博客:《运行,暂停,检查:探索如何使用LLDB进行有效调试》

2025-11-23 22:26:52 716

原创 LRU缓存机制

网络请求可以让我们的app不止局限于手机的本地操作,还能让我们通过手机来访问互联网上丰富多彩的内容但是网络请求有时会限制与网速等硬件要求如何去利用空闲的网速来缓存,就成了重点问题。

2025-11-23 22:25:39 527

原创 运行,暂停,检查:探索如何使用LLDB进行有效调试

LLDB的简单使用,入门教程

2025-11-16 23:46:24 964

原创 深入了解iOS内存管理

在开始之前,我们先要弄清一个问题,我们为什么要减少软件的内存占用?简单的回答是,为了使用户获得更好的体验不仅你的 App 会启动得更快,系统会表现得更好,你的 App 也会在内存中保留更长的时间其他 App 也会在内存中保留更长的时间,几乎一切都变得更好。

2025-11-09 20:00:49 1117 1

原创 事件传递和响应者链

在使用手机的过程中,会产生很多的交互事件,如触摸屏幕,摇晃,按下按键,使用耳机等外接设备操控设备等,这些事件都需要系统去响应并处理,这篇文章简单将简单介绍系统如何响应,处理事件。

2025-11-02 20:15:18 983

原创 【OC】UIKit常用组件适配iOS 26

在开始之前,得先说说对于iOS 26的设计理念iOS 26最重要的就是引入了液态玻璃效果,液态玻璃结合了玻璃的光学特性和流动性。这种材料为控制和导航元素形成了一个独特的功能层。它会影响界面的外观、感觉和移动方式,根据各种因素进行调整,以帮助将焦点放在基础内容上所以在使用液态玻璃效果的时候,一定要注意不要让液态玻璃效果影响到用户的可读性,我们只需要将液态玻璃效果控制在重要的部分即可同时,为了适配液态玻璃效果,我们应该尽可能的减少自定义背景,并让系统决定背景外观。

2025-10-26 20:52:05 2748 1

原创 UIMenu的简单实用

UIMenu是在iOS13之后加入的,它就像一个可以选择的,Apple提供了这种选项作为导航系统的一部分,让用户可以清晰的知道自己可以去到哪里类似于,UIMenu也是一种容器类元素,tableView内部元素为cellUIMenu内元素为当然同自定义的cell相同,也可以嵌套UIMenu,更常见的做法是使用UIAction。

2025-10-24 21:38:38 937

原创 Core Animation基础

“嗯,圆和椭圆还不错,但如果是带圆角的矩形呢?我们现在能做到那样了么?”史蒂芬·乔布斯摘录来自ios核心动画高级技巧此材料受版权保护。

2025-09-21 17:40:16 1042

原创 AFNetWorking

简单来说,oc的原生网络请求即:拼接字符串——>使用管理网络请求的单例创建网络请求任务——>处理请求得到的数据等内容

2025-09-21 17:21:59 817

原创 ViewController的总结

视图控制器(viewController)是App的内部结构的基础,每个应用程序至少有一个视图控制器,大多是App有多个,每个视图控制器管理着App的UI的一部分内容,并承担着UI与数据的关系等,同时一些控制器还要承担用户界面不同部分的过渡一个容器视图控制器实际上就像一个普通的内容视图控制器,它也同样有一个根视图和一些内容。区别在于一个容器视图控制器的根视图上的内容来源于其他的viewController。

2025-09-14 17:12:16 860

原创 线程和进程,以及GCD的简单使用

除了使用系统提供的队列,还可以手动创建队列。// 创建串行队列// 创建并发队列函数有两个参数,第一个参数指定队列名称,debugger和性能工具会显示此处队列名称以帮助跟踪任务执行情况。第二个参数指定是串行还是并发队列我们可以创建任意数量串行队列,但这些串行队列之间是并发关系。例如,创建了四个串行队列,每个串行队列执行一个任务,系统可能同时执行这四个任务。

2025-09-14 17:08:19 716

原创 简单的折叠cell

为了在协议中更改cell的数量,我们可以使用一个枚举或者就是简单的布尔值来判断tableView是否展开,从而给tableView返回cell的个数。我们一般所说的折叠cell,实际上是在代理方法中,更换tableView的cell数量,来隐藏一部分的cell,在需要的时候,再展示的一个方法。在普通用户不需要过多的复杂选项或者信息,或者在需要选择某种风格之类的枚举值的时候可以考虑使用折叠cell。折叠cell是为了简化用户界面,隐藏在通常情况下不需要的部分的一种方法,该方法符合渐进展开原则。

2025-09-14 17:04:46 740

原创 单例模式重新学习

饿汉模式创建时机:应用启动时优点:简单、线程安全、调用快适用场景:单例对象不大,或者在应用生命周期中几乎总是会用到懒汉模式创建时机:第一次使用时优点:节省内存、减少启动耗时适用场景:单例对象比较大,或者不确定是否会用到在 iOS 开发中,懒汉模式(尤其是使用的方式)是最常用和推荐的单例实现方式。它结合了懒加载的优点,同时完美地解决了线程安全问题,是目前最优雅的解决方案Code Snippets是一个可以帮助你减少写重复代码的工具对于单例这种可能会经常用的代码块,可以添加入自定义的代码片段。

2025-09-14 17:03:17 634

原创 MVC模式学习

MVC设计模式,即Model-View-Controller(模型-视图-控制器),其核心理念是清晰的划分视图(即呈现给用户且用户可以与之交互的界面)和模型(负责应用程序业务逻辑和数据处理的部分)之间的关系在MVC架构中,视图与模型之间并不直接沟通,所有的数据需要通过控制器,这样的设计使得各个部分都可以独立,便于维护和管理用户点击视图,视图控制器接收点击,然后控制器转递给模型请求处理数据,模型处理完数据后通知控制器,控制器改变视图接下来详细讲讲每个模块的功能。

2025-09-07 15:41:17 884

原创 Masonry的基本用法

Masonry是一个轻量级的自动布局视图的第三方库,支持更加便捷的链式语法调用,具有高可用性和阅读性等特点当然OC是有自己的原生自动布局视图的,个人觉得也是比较好用的,但是对比Masonry来说,原生的自动布局视图实际上还是要你告诉系统应该这么做。而Masonry则更像是Swift UI式的声明式语言,即你只需要描述你想要的视图,就可以让Masonry来帮你处理好。

2025-09-07 15:40:23 731

原创 push pop 和 present dismiss

之前曾经在网易云仿写总结中,使用过present制作抽屉视图的展示,在这里再次详细对比一下push和present的区别想象一下你正在看一本书,随着你读书的进度不断增加,你的页数也越来越多,这就是导航栏带来的逐层深入。突然,你需要查一个重要的词语解释。你会从桌上拿起一本字典,把它放在你正在看的书页上,然后开始查找。这本字典就是你的模态视图,它暂时遮住了你正在看的书页(在iOS13之后,present出的页面的模态样式变为了,新的页面将不再完全覆盖之前的页面,而只会部分遮挡,并且允许你向下拖动关闭)

2025-09-04 18:52:57 1145

原创 属性关键字

这是一个很简单的类的属性定义,其中,它定义所使用的属性关键字也是开发中最常用的观察这两个关键字可以发现这两个关键字分别规定了tableView的内存管理——即strong关键字,和线程安全——nonatomic这个简单的定义实际上就是oc关键字的缩影内存管理类,包括strong, assign, weak, copy线程安全类,包括nonatomic和atomic两类关键字共同约束了对象的内存管理方式和线程安全性。

2025-09-04 18:45:01 741

原创 基本的设计原则

看了苹果在WWDC2017年发布的“基本的设计原则”的视频,简单总结了一下UI (user interface)用户界面, 对比另一个人机界面(human interface)使用更为广泛,但是后者在Apple的历史非常悠久用户(user)这个词,是非常冰冷抽象的。所以在Apple内部,实际上用的更多的是human这个词“界面设计根本上是为人类而服务,不是为了把应用做得漂亮,或者做得工整,简单,紧凑。

2025-08-28 17:45:07 652

原创 自动布局视图来实现聊天室的界面

在share项目中,需要实现私信界面,但由于我比较懒,于是选择了学习自动布局视图来实现聊天室的内容在实现聊天室之前,我们需要弄清楚聊天室是怎么构成的每条消息实际上是就是一个cell,整个界面就是一个tableView,在这个tableView的底部加上一个textField,就成了基本的聊天室界面那实现的难点就在于,如何根据你输入文字的多少,来修改整个cell的高度我这里使用了cell的自动布局首先我们在tableView里把高度设置设为自动计算,并且给定一个预设高度。

2025-08-02 14:28:28 722

原创 DocC的简单使用

简单来说,DocC就是更高级的注释,虽然DocC 是专门为 Swift 代码写文档的工具,但是在OC中也是可以使用的,它可以将基于 Markdown 的文本转换为丰富的 Swift 框架和包文档最重要的是,DocC 语法非常简单却很强大。不需要创建额外的文件或使用其他软件,一切都可以直接在 Xcode 中完成。当然,这里的介绍只是我觉得常用的部分,Apple在DocC方面有详细的教程,DocC的作用也远不止这些,感兴趣的同学可以移步Apple Developer。

2025-07-26 16:21:26 512

原创 Zara和网易云音乐仿写总结

无限轮播视图是一个使用中的方法来实现“无限”的假象的方法,并不是真的无限加入视图我这里使用了五张图片,但实际上在我的ScrollView上有七张图片在轮播到假的第五张(实际是第六张)的时候,-scrollViewDidScroll:(UIScrollView *)scrollView会自动判断contentOffset.x的值,一旦超过阈值,就会把contentOffset.x调到真的第一张这样营造出了”下一张是第一张“的假象。

2025-07-19 16:51:20 1019

原创 UI学习汇总

UITableView (表视图) 就像一个Excel 表格。它能有效地展示大量数据,每一行都是一个独立的数据项UITableViewCell (表视图单元格) 就像 Excel 表格中的一个单元格。每个单元格可以显示不同的内容(比如文本、图片),而且你可以根据需要设计它的样式虽然不常用,但是在cell过于复杂的时候,可以使用这种方式来直观的规划cell,由于其可视化,可以直观的看到各个控件的位置和大小完全使用代码来控制cell,牺牲了可视化,但是对UI布局有最高的控制权cell的重用机制。

2025-06-15 18:26:21 687

原创 UI总结(上)

对UILabel的文字赋值。

2025-06-02 15:38:10 994

原创 属性关键字总结

先给出一个表格,方便直接查阅。

2025-05-28 17:25:51 612

原创 第七章总结

方法说明length返回字符数(注意不是字节数)获取某个位置的字符utf8String返回 C 语言风格的 UTF-8 编码字符串返回大写/小写的新字符串2.方法说明在末尾追加字符串追加格式化内容在指定位置插入子串NSMutableString *mstr = [NSMutableString stringWithString:@"悟空"];[mstr appendString:@"传"];[mstr appendFormat:@" %d部", 1];

2025-05-25 15:31:40 492

原创 Xcode常用的快捷键总结

在日常使用 Xcode 进行开发时,掌握常用快捷键可以显著提高编码、调试与界面操作的效率。以下按功能类别整理了 Xcode 的高频快捷键操作。

2025-05-18 22:06:42 819

原创 Objective-c第六章总结

使用 @protocol 关键字定义,不能使用 @interface 或 @implementation;语法格式如下@protocol 协议名 <父协议1, 父协议2>- (方法声明);@endReadable@end表示一个对象可以被“阅读”,需要实现 read 方法@end表示“具有生产能力的类型”需要实现 getProduceTime 方法。@end这是NSObject 提供的实例方法,意思是:“这个对象是否能响应该方法(selector)?

2025-05-18 15:11:35 942

原创 objective-c学习 面向对象

接口部分(@interface):声明类的属性(成员变量)和方法(函数)实现部分(@implementation):实现这些方法的具体功能@interface Human : NSObject:声明一个名为Human的类,它继承自NSObject大括号 {} 中的是成员变量(用来描述对象的状态,比如数量、数据、名字)-表示实例方法(对象调用),+ 表示类方法(类直接调用)@end 表示类接口声明结束int _age;@end方法声明的语法格式如前文所说。

2025-05-11 00:11:21 1263

原创 c,oc,和swift

本篇文章的出发点是 C 语言,作为经典的过程式编程语言,它提供了最基本的编程模型:包括输入输出、函数定义、条件与循环、指针操作等我们将以 C 语言的基本语法结构为“骨架”,逐项展开,比较 Objective-C 和 Swift 这两种现代语言在实现相同功能时的写法与机制差异换言之,本篇不是简单罗列三种语言的语法形式,而是以 C 语言为基础,探究在其他语言中如何实现相似功能,以及语言设计背后的理念与机制。

2025-05-11 00:08:24 565

原创 双指针的进阶

双指针(Two Pointers)是一种高效解决问题的算法思想,广泛应用于数组、字符串、链表等数据结构的遍历、查找与区间计算问题中其核心在于通过两个指针在数据结构中以特定方式移动,降低时间复杂度、避免重复计算。

2025-05-07 22:12:48 465

原创 git 总结

初始化当前目录为一个 Git 仓库示例:我在新建的项目文件夹中运行 git init 来开启版本控制查看当前工作区和暂存区的状态(哪些文件被修改了,哪些未提交)示例:改动了代码后,运行 git status 查看有哪些文件已修改将指定文件添加到暂存区示例:我修改了 main.c,用 git add main.c 把它放入暂存区将所有修改的文件加入暂存区示例:开发完成后,我运行 git add . 添加所有修改内容提交暂存区中的更改,并附上说明。

2025-05-03 20:31:07 627

原创 反转链表的四种方法

其中 cur 指向已反转部分的尾部,slow 为当前待反转节点,fast 保存 slow 的下一个节点以防止断链。通过不断的头插构建出一个新链表,从而完成链表反转。通过栈的“后进先出”特性,将链表节点依次压入栈中,再按栈弹出顺序重新链接各节点,构建反转链表。利用两个指针 pre 和 cur,不断将当前节点 cur 插入到链表的最前端,从而实现链表反转,可以不额外占用空间。给定单链表的头节点 head,请你反转该链表,并返回反转后的头节点。对链表结构的了解以及对指针的操作,每一步指针的变化过程可能不够明显。

2025-04-26 16:14:54 774

原创 哈希表在c语言中的简单应用

哈希表是一种通过将关键字映射到数组下标来实现快速查找的数据结构。它利用哈希函数将任意大小的输入映射为固定范围内的整数索引,从而在理想情况下以常数时间复杂度实现插入、删除和查找操作。虽然在c语言中,没有对应的数据结构,但是我们可以使用结构体或者数组来构建哈希表。哈希表的本质就是用空间换时间。通过对应的下标来简化增删改查的操作,大大降低了时间复杂度。

2025-04-20 16:54:39 492

原创 对双指针的理解和总结

双指针其实是代替双循环从而降低时间复杂度,双指针的本质是通过两个指针在同一个数据结构上高效地并行操作,利用它们的相对位置关系来优化问题的求解过程。它通过减少不必要的重复计算,提高程序效率。

2025-04-13 18:55:36 804

原创 3G实验室二面题

实验室二面题讲解

2025-04-06 19:02:51 841 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除