- 博客(38)
- 收藏
- 关注
原创 【iOS】GCD学习
GCD是iOS开发中非常重要的一个内容,在此作一个总结。GCD全称Grand Central Dispatch,是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统及中实现。开发者只需要定义想执行的任务并追加到适当的调度队列中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,这样会比以前的线程更有效率。仅一行代码就能表示让处理在后台线程中执行。那么为什么使用GCD?
2025-12-06 16:57:41
1005
原创 【iOS】多线程学习
在写项目时,笔者发现需要很多GCD的内容,因此笔者决定先学习一下多线程,这样有利于后续对GCD的理解。笔者这篇文章简单总结了有关多线程的内容,后续更加深入学习将补充完善此篇博客。
2025-11-24 20:47:37
1034
原创 C++ STL语法速记
C++封装并实现了优先队列。priority_queue是优先队列,也就是堆,默认是大根堆。vector是C++STL中的动态数组容器。输出数组我们会发现,以上三种创建方式是等效的。这些功能与前面的有序容器类似,这里不做过多赘述。v1.begin():标号为0的元素所在位置。v1.begin():标号为0的元素所在位置。无序容器基于哈希表实现,提供快速的增删改查。v1.end():最后一个元素后的位置。v1.end():最后一个元素后的位置。C++封装了一个队列。C++封装了一个栈。
2025-11-21 20:30:22
1001
原创 【iOS】音频与视频播放
在iOS应用中集成音频和视频播放功能是常见的需求。iOS提供了强大的框架来支持多媒体内容的播放,主要是AVFoundation框架。初始化一个播放单元这里我们的URL要明确视频的路径是本地还是网络。网络URL:NSURL *url = [NSURL URLWithString:@"/Users/mac/Desktop/技能五子棋.mp4"];本地文件:如果视频在本地某个位置:NSString *path = @"/Users/mac/Desktop/技能五子棋.mp4";
2025-11-08 13:18:24
972
1
原创 【iOS】UICollectionView
UICollectionView是iOS26之后UIKit框架中引入的一个新的控件,用于实现网格布局、横向滚动列表、照片墙、轮播图等复杂布局的强大控件。不再只能垂直滚动,其滚动方向可垂直、水平或自定义。通过UICollectionViewLayout控制进行布局。通过layout布局回调的代理方法可以动态地定制每个item的大小和collection的布局属性。UICollectionView中Item的大小位置可自定义。更加灵活。
2025-11-05 20:49:42
965
原创 【iOS】自动引用计数(一)
这是因为无论调用哪一个对象的autorelease实例方法,实际上调用的都是NSObject类的autorelease实例方法,但是对于NSAutoreleasePool类,autorelease实例方法已被该类重载,也就是说,NSAutoreleasePool本身就是管理autorelease对象的池子,而现在它要把自己放进自己管理的池子里,这样就会造成严重的内存错误或死循环,因此会报错。因此,为了不以自己持有的状态来保存自己生成并持有的对象,生成的对象会立即释放,编译器就会给出警告。
2025-10-26 22:26:04
1317
1
原创 【iOS】KVC
KVC,键值编码,是OC的一种间接访问对象属性方法或成员变量的机制。它允许通过字符串key名称来访问对应的属性方法或成员变量,而不是直接调用getter/setter方法。KVO传值的内部就是依赖于KVC实现属性值变化的检测和通知机制的。以上就是关于对KVC的学习总结,之后还会继续学习相关内容。
2025-10-15 10:53:04
769
原创 【iOS】简单的四则运算
四则运算的本质是使用运算符号优先级来判断是否入栈出栈,其思路有两种:一种是中缀表达式转后缀表达式,对后缀表达式进行计算得到结果;另一种是直接使用中缀表达式计算结果。简单的四则运算是我在仿写计算器时的核心,同时也对栈的学习很有帮助,后面将会多复习这里。
2025-10-04 13:02:06
933
原创 【iOS】YYModel
YYModel是YYKit的高效组件之一,在项目中使用MVC架构时,可以简化数据处理。这里学习后可以对天气预报的仿写进行一个优化。这样,我们就可以更方便地将网络请求中得到的数据转化成我们的OC对象,方便对数据操作处理。
2025-09-22 21:17:54
770
1
原创 【iOS】static、const、extern关键字
继属性关键字博客,这里补充static、const、extern关键字的学习。static修饰局部变量时,将分配在栈区改为分配在静态存储区,改变了局部变量的生命周期。static修饰全局变量时,将源程序所有文件可见改为只在申明自己的文件可见,改变了作用域。extern关键字使得不同文件可以共享相同的变量和函数,实现跨文件的共享和使用。
2025-09-14 21:28:46
934
原创 【iOS】UIViewController生命周期
在iOS开发中,UIViewController是一个很重要的概念。在学习MVC中,我们知道它是view和model的桥梁。UIViewController作为UIKit中最基本的一个类,我们很有必要学习了解一下UIViewController的生命周期。以上就是我学习的UIViewController生命周期小结。
2025-09-11 20:08:16
1150
原创 【iOS】单例模式
单例模式是很重要的一部分内容,这里重点总结复习一下。单例模式是一种设计模式,保证一个类在程序运行中只会有一个实例,并且提供全局访问点。这样防止一个实例被重复创建而占用内存空间,大大节省了内存。总的来说,懒汉模式适用于需要延迟加载实例的情况,饿汉模式适用于需要简单实现和线程安全性的情况,具体情况具体分析。
2025-09-10 20:23:46
962
原创 【iOS】多界面传值
在先前的的仿写中多次使用到了不同界面的传值,这里作一个总结。在仿写项目的过程中,多界面传值是很重要的部分,笔者会在学习后继续补充完善。
2025-09-07 18:24:59
1143
原创 【iOS】懒加载
懒加载是 iOS 开发中一个非常重要且常用的设计模式,也称延迟加载。它的核心思想是:一个对象的初始化被延迟到第一次真正需要它的时候,从而节省内存和提高性能。看的出来,只有在一次初始化时会NSLog一下,而后面再点击按钮时,都不会再初始化,只会复用现有的label。
2025-09-06 20:30:35
677
1
原创 天气预报仿写
以上就是我对暑期最后一个仿写项目—天气预报的仿写的总结,不过我的这次仿写没用用到MVC架构和使用SVGKit第三方库,后续将巩固这些内容来优化天气预报的仿写。
2025-09-04 18:44:10
1012
原创 Masonry
Masonry是iOS上一个轻量级的Auto Layout 框架。可以使用链式语法写布局,比原生NSLayoutConstraint简介很多。这里读者就学习的Masonry内容作个总结。链式语法:允许在同一条语句中连续调用多个方法,每个方法返回对象自身。以上就是我对Masonry的学习总结,在今后的学习中将会多练习使用Cocoapods导入第三方库和Masonry布局来提高我的代码性能。
2025-09-03 20:25:18
690
原创 MVC架构模式
为了更好地完成天气预报的仿写,这里先学习一下MVC。MVC 是 Model-View-Controller 的缩写,是一种经典的软件架构模式(针对系统结构和模块职责分配的一种通用解决方案)。Model(模型):负责数据处理,包含仿写天气预报中的网络请求。View(视图):负责UI界面,例如UIView或UITableViewCell。Controller(控制器):View不直接修改Model,而是通过Controller连接,处理用户交互,例如UIViewController。
2025-08-31 17:54:48
508
原创 网易云音乐仿写
在网易云仿写的过程中,对之前学的内容又进行了滚动,还学习到了新的传值方式。过程中还不小心丢失了一次代码,所以会用git真的很重要!!!!!
2025-07-19 11:45:13
725
原创 Cell的复用及自定义Cell
在iOS开发中,和是常用的列表视图控件,而Cell复用和自定义Cell是优化其性能和灵活性的关键技术。默认的或样式有限,通常需要自定义Cell来满足UI需求。初始化阶段ViewController加载时创建并配置UITableView注册自定义Cell类与复用标识的关联Cell创建阶段当tableView需要显示cell时,调用系统首先尝试从复用队列中获取cell如果没有可复用的cell,系统会调用初始化新的cell在初始化方法中创建并配置label1和label2布局阶段。
2025-06-09 20:09:08
980
原创 【iOS】UI学习(二)
在分栏控制器中添加按钮时,下面页面最多显示五个按钮,当多于五个按钮时,多于五个的按钮会被自动折叠放入"more"中。代码中值得注意的是,在touchesBegan函数中,每次判断完是变大还是变小后,要将这个变量重置,这样就可以实现状态的交替变化和实现。popViewController:弹出视图控制器(将当前控制器弹出栈)布局子视图目的:使子视图跟随父视图的移动而移动,使其相对位置不变。分栏控制器是主要用于同时展示多个视图控制器并使其交互的控件。导航控制器的结构:(采用栈结构管理多个视图控制器)
2025-06-08 14:45:36
2003
原创 isMemberOfClass和isKindOfClass
isa 是 NSObject 基类定义的一个指针属性(实际由编译器自动生成),用于标识对象的类类型或元类型。通过 isa指针,对象可以找到其所属的类,类可以找到其所属的元类,元类最终指向根元类,形成一条类型链。继承链是指从子类到根类(NSObject的类层级关系。当调用对象的方法或属性时,会沿着继承链向上查找,直到找到对应的实现或到达根类。isMemberOfClass和isKindOfClass最大的区别还是在于比较的是两个类是否相同还是当前类和对比类自身或其子类相同。
2025-05-19 22:01:07
738
原创 Foundation框架详解
重写isEqual:和hash方法(isEqual:方法判断相等,hash返回值相等)实现copyWithZone:方法,最好返回该对象的不可变副本为了避免索引(key)被破坏,NSDictionary总会先调用该key的copy方法复制该对象的不可变副本,然后用该副本作为NSDictionary的key。
2025-05-19 19:19:17
956
原创 深拷贝与浅拷贝
内容拷贝,是对整个对象的拷贝,将数据拷贝到一块新的内存区域,指针指向拷贝的新的数据区域。(新创建了一个一模一样的对象,与被拷贝对象不共享内存,修改新对象不会改变原对象指针拷贝,仅仅是对于指针的拷贝,复制一个新指针指原来的同一块内存区域。(实际没有发生拷贝,只复制了指向某个对象的指针,而不复制对象本身,与被拷贝对象共享一块内存上图中,左边的方式为浅拷贝(只复制了指针,仍指向同一对象),右边的方式为深拷贝(不仅新建了指针,还复制了对象)。OC中有三种容器:数组、字典和集合。
2025-05-14 20:33:47
1036
原创 面向对象(下)第6章
以下是本人在学习面向对象(下)第6章时,总结的学习笔记。@protocol定义正式协议的基本语法格式@protocol 协议名 <父协议1, 父协议2,...> {零个到多个方法定义...协议名应与类名采用相同的命名规则一个协议可以有多个父协议,但协议只能继承协议,不能继承类。**协议中定义的方法只有方法签名,没有方法实现,**协议中包含的方法既可以是类方法,也可以是实例方法。协议里所有的方法都具有公开的访问权限。
2025-05-12 22:20:17
907
原创 OC面向对象(上)第5章
整理总结了一下最近两周学习OC的底章的内容。面对对象的程序设计过程中有两个重要的概念:类(class)和对象(object,也称为实例,instance)。类和对象是面向对象的核心。接口部分:定义类包含的成员变量和方法实现部分:为类的方法提供实现。int _count;id _data;@end@interface:用于声明定义类的接口部分@end:表明定义结束花括号中声明类的成员变量,花括号后面的部分用于声明类的方法其中,成员变量和方法是非常重要的概念。
2025-05-11 16:02:20
722
原创 OC中字符串的实现方式
简单总结一下,这个类型的字符串保存在常量区,不可修改,一般NSString直接创建;NSCFString这个类型的字符串在运行时动态生成,保存在堆去,可以修改,一般使用NSString stringWithFormat:动态创建;这种类型是把字符串内容直接保存在指针中,而不是真正的对象,一般适用于较短字符串。
2025-05-09 22:29:19
858
原创 【iOS】OC面向对象(上)
该博客梳理一下本周学习的OC的内容。以下是OC不同于C语言在代码上的一些区别:”)等同于printf(“Hello, World!”)NSLog自动换行“ ” 引用是自己定义的类@autoreleasepool 自动释放池.h文件只负责声明,不负责实现.m文件为实现声明的方法面向对象的程序涉及过程中,有两个重要概念类(class)和对象(object,也称为实例,instance),其中类是某一批对象的抽象。**类和对象是面向对象的核心。**Objective-C中定义类需要分为两个步骤。
2025-05-05 19:01:46
687
原创 单链表的增删改查
在数据结构中,链表是一种常见的线性数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。链表可以分为带头节点的链表和不带头节点的链表例题:[707. 设计链表 - 力扣(LeetCode)19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)206. 反转链表 - 力扣(LeetCode)在原链表末尾最后一个节点指向NULL,存入val,添加一个新节点指向原尾节点,扩大原链表内存大小= NULL) {
2025-04-13 16:14:41
977
原创 实验室二面题解
第一个人(1 号)将灯全部关闭,第二个人(2 号)将编号为 2 的倍数的灯打开,第三个人(3 号)将编号为 3 的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。一个 n 个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了 [1,n-1] 之间的所有整数,则称之符合“欢乐的跳”,如数组 {1,4,2,3} 符合“欢乐的跳”,因为差的绝对值分别为:3,2,1。数据保证,1 <= n <= 10^6=,0 <= a_i,q <= 10^9,1 <= m <= 10^5。
2025-04-06 23:03:25
2121
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅