- 博客(28)
- 收藏
- 关注
原创 [iOS] Block 的使用
Blocks是带有局部变量的匿名函数(不带名称的函数)。Blocks 也被称作闭包代码块。展开来讲,Blocks 就是一个代码块,把你想要执行的代码封装在这个代码块里,等到需要的时候再去调用。
2025-11-30 16:44:53
886
原创 [iOS] GCD - 线程与队列
在 iOS 开发中线程和队列有种说不清道不明的关系。线程是代码执行的路径,队列则是用于保存以及管理任务的,线程负责去队列中取任务进行执行。我的理解:多个队列的任务可以在一条线程上执行,一个队列的任务也可以在多条线程上执行。个人理解,队列可以包含线程,线程也可以包含队列。下面有两个 GCD 相关的函数:立马在当前线程执行任务,执行完再往下走,这句话可以解释很多问题。(同步):不要求立马在当前线程执行任务,可能会开启新线程,也有可能不会。(异步)
2025-11-06 21:06:09
860
1
原创 [iOS] KVC 学习
本篇博客主要介绍 KVC 的相关内容。KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态在访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。KVC 的定义是通过 NSObject 的拓展来实现的,下面是关于 KVC 的四个重要方法//直接通过属性名来取值//通过属性名来设值。
2025-10-15 18:24:06
888
1
原创 [iOS] YYModel 初步学习
iOS 开发中少不了各种各样的模型,不论是采用 MVC、MVP 还是 MVVM 设计模式都逃不过 Model。那么大家在使用 Model 的时候肯定遇到过一个问题,即接口传递过来的数据(一般是 JSON 格式)需要转换为 iOS 内我们能直接使用的模型(类)。iOS 开发早期第三方框架没有那么多,大家可能会手写相关代码,但是随着业务的扩展,模型的增多,这些没什么技术含量的代码只是在重复的浪费我们的劳动力而已。所以就会出现 YYModel 这一类的第三方库来解放我们的劳动力。
2025-09-23 17:48:57
865
原创 [iOS] 网络 - AFNetWorking
AFNetworking 是一套适用于 iOS,macOS,watchOS 的一个网络库。AFNetworking2.0 之后的版本构建在基于 NSURLSession 的 FoundationURL 加载系统之上。AFNetworking 拓展了 Cocoa 内置的强大的高级网络抽象。
2025-09-18 19:25:06
784
原创 [iOS] 属性关键字
这里我给出一个表格来去介绍大部分的属性关键字分类关键字作用说明原子性atomic (默认)保证多线程读写安全性能差,一般不用nonatomic不保证线程安全性能更好,iOS 开发中几乎都用这个性能更好,iOS 开发中几乎都用这个内存管理strong对象持有(引用计数 +1)常用于 OC 对象属性weak不持有对象,释放后自动置 nil常用于避免循环引用(如 delegate)常用于避免循环引用(如 delegate)assign直接赋值,不改变引用计数。
2025-09-11 18:51:07
864
原创 [iOS] ViewController 的生命周期
UIViewController 是在 iOS 开发中一个非常重要的角色,他是 view 和 model 的桥梁,通过 UIViewController 的管理将数据展示在视图上。与此同时作为 uikit 中最基本的一个类,一般复杂的项目都离不开 UIViewController 作为基类,所以了解 UIViewController 的生命周期是很重要的。这就是一个非常简单的流程图他也展示了UIViewController 的生命周期。在这里我想补充一点就是。
2025-09-10 20:31:15
887
原创 [iOS] 单例模式的深究
这篇博客是对单例模式的一个深入了解,之前的对单例模式的学习太过浅薄了,所以撰写这篇博客来去深入对单例的理解。单例模式是一种常见的设计模式,核心思想是:保证一个类在整个程序运行期间,只有唯一一个实例,并且提供一个全局访问点。它可以做到大大减少内存的使用,防止一个实例被重复创建从而占用内存空间,他在共享资源和对象的情况下非常有用。下面给出一些 OC 中常见的单例NSUserDefaults → 用户偏好设置UIApplication → App 的入口对象NSFileManager → 文件管理器。
2025-09-09 22:34:53
1125
原创 [iOS] push 和 present Controller 的区别
push 和 present 分别是 ios 中的两种推出方法。下面我会结合实例来去介绍一下这两个方法。
2025-09-07 10:54:06
427
原创 [iOS] MVC 入门
Model:大脑,做决定View:眼睛,显示信息Controller:手,执行动作,协调大脑和MVC 的最显著优点就是可以把view 和 Model 都分别分开,缺点可能就是会导致 Controller 层越来越臃肿。
2025-09-06 22:06:48
465
原创 [iOS] 折叠 cell
这里我给出完整的代码@end// [self.zhedie setTitle:@"展开" forState:UIControlStateNormal];[self.zhedie setImage:[UIImage imageNamed:@"向左箭头"] forState:UIControlStateNormal];1 : 2;return 1;if (!
2025-09-04 19:28:21
344
原创 [iOS] 通过使用 Masonry 来实现自动布局
自动布局是我以前没有接触过的一个部分,我之前在暑期写项目的时候使用了很多的布局使用的都是死的布局,就是把位置写死,这样会导致一个问题就是,他的适配很差,所以现在学习了一个适用性更好的布局方式自动布局。自动布局让 UI 代码更灵活,适配不同屏幕、横竖屏和动态内容更轻松,维护也更方便。
2025-08-28 20:34:38
395
原创 3GShare 学习仿写记录
3GShare项目技术总结:该项目实现了登录注册、首页展示、文章发布、搜索上传等功能模块,主要技术亮点包括:1. 通过协议传值实现登录注册数据交互,并采用TabBarController架构;2. 首页实现点赞功能双向同步(首页与详情页),通过布尔值控制状态并局部刷新单元格;3. 搜索页采用属性传值将关键词传递至目标页面,上传功能使用数组计数管理多图选择;4. 折叠Cell通过按钮点击切换布尔值控制展开/收起状态;5. 个人中心采用单例模式保存按钮状态(如关注状态),使用NSObject子类管理字典存储。项
2025-07-26 18:37:44
364
原创 网易云仿写学习记录
在这次的仿写中用了大量的自定义 cell,大部分的页面也都主要由自定义 cell 构成。那就一一开始介绍,我首页的主要的自定义 cell,以及他所包含的知识。第一个是我的顶部的通过一个 ScrollView 实现可以左右滑动的自定义 cell,我个人觉得他的难点在于怎么去把图片放到画布上,我设计的是通过一个方法来把数据配置上去,里面其实核心也就是一个 for 循环。下面是核心代码i++) {他的任务就是把文字和图片配置到画布上。
2025-07-19 11:18:05
846
原创 OC 学习--UI 2
导航控制器(UINavigationController)负责控制导航栏(navigationBar),在导航栏上的按钮叫UINavigationIitm,在导航控制器中也控制一个视图控制器(UIViewController),每个视图控制器中对应一个导航引入项(navigationItem),导航引入项就是显示在导航栏上的内容,包括leftBarButtonItem(导航栏左侧按钮),titleView(导航栏中间标题),rightBarButtonItem(导航栏右侧按钮)
2025-06-09 19:37:03
1077
原创 登录案例和照片墙案例
这里我们实现了一个最基础的登录界面,用户名和密码登录需要UILabel和文本输入框登陆和注册通过两个按钮和警告对话框实现。下面是代码实现部分下面是实现效果。
2025-06-08 10:41:29
361
原创 oc 细解 属性的特殊指示符
这是一篇对特殊指示符知识点加以详细解释的博客,在最开始学习的时候其实没有太过于去注意这块的细解,本篇博客就去细解一下。
2025-05-20 17:13:44
886
原创 oc 细解 单例模式
单例模式是因为在某些时候,程序多次创建这一个类的对象没有实际上的意义,那么我们就只用在程序运行的时候只初始化一次,自然就产生了我们的一个单例模式。
2025-05-20 17:13:18
381
原创 oc 笔记 面向对象下
在 Objective-C(OC)中,“包装类”通常是指的类。OC 是基于 C 的,所以也支持基本数据类型(如intfloatchar等),但有些场景下(如在集合中存储)只能使用对象类型,这时就需要用到“包装类”。
2025-05-12 20:50:18
666
原创 oc 笔记 面向对象上
在这一节我会去接受 oc 中属性使用getter和setter方法,在属性中其实是自带setter和getter,而且他还具有一定的扩展性比如可以重命名getter和setter。那这里我们去举个例子来介绍属性的相关内容@interface fkuser2 : NSObject//属性的相关代码@end@implementation fkuser2//属性//_name可以换成任意变量名只要和@synthesize正确绑定即可@end。
2025-05-08 21:11:36
990
原创 双指针续集--滑动窗口
特点定长滑动窗口变长滑动窗口窗口大小固定动态变化控制方式根据固定长度k控制根据某个条件(如和不超过x)动态调整窗口使用场景固定区间分析条件满足的最长/最短子数组问题其实滑动窗口是一个非常固定解法的的一类算法,只是它会在里面融合其他数据结构就比如哈希表之类的使他增加了一定的难度,但其实只要掌握了模版很多题目也是很好解答的。
2025-05-05 10:11:57
908
原创 栈与队列的相关理论和代码实现2
栈是一种线性数据结构,只允许在**一端(栈顶)**进行插入和删除操作。简单来说,谁最后放进去,谁最先出来,就像装东西的纸箱或一摞盘子。
2025-04-27 17:13:48
959
原创 学生信息管理系统总结
我定义了两个结构体一个是老师的一个是学生的,他们分别有自己的账户姓名和班级,学生会多出一个成绩。(但是老师的这个结构体主要是用来登录的,注册时可以理解为老师和学生共用一个结构体,这里不会导致出错的原因呢是因为如果每注册一个用户他都会存于文件中如果需要读取时就创造一个头结点来开始做链表的操作)。
2025-04-18 18:59:30
291
原创 双指针算法和其相关应用
这道题很巧妙的使用双指针法来收集字符,以及慢指针对空格的巧妙处理,我们可以借鉴他的对空格处理技巧,来增加对字符串处理的能力。双指针的本质是:在有序结构或规则结构**上,通过两个游标的移动,有目的性地缩小搜索范围,以达到高效查找、扫描、计数、定位等目标。节省时间复杂度(从 O(n²) 降为 O(n) 或 O(nlogn));逻辑清晰,便于实现和调试;那我们复盘一下这是三道题第一题:我们使用双指针的方法来寻找要移除的元素,让其不断的向前覆盖。
2025-04-13 18:33:59
1053
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅