自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【iOS】MVVM

这个架构中,三个实体联系太过紧密,每个实体都知道另外的两个实体。这就导致了复用性能急剧下降。苹果官方推荐使用的MVC,结构大致如下:https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html友链:https://www.jianshu.com/p/9e8fd85b61e0可以看出View跟Model事实上是没有交互的,由Controller负责Model。

2025-12-09 17:48:24 679

原创 【iOS】SDWebImage解析

SDWebImage是iOS中提供图片加载的第三方库,可以给UIKit框架中的控件比如UIImageView和UIButton提供从网络上下载和缓存的图片。它的接口十分简洁,如果给UIImageView控件添加图片//第一个参数是图片的URL第二个参数是占位图片加载失败时显示如果给UIButton//第一个参数是图片的URL,第二个参数是按钮状态,第三个参数是占位图片,加载失败时显示SDWebImage还提供了其他方法, 但是我们通过查看源码发现,最终都是调用气全能方法。

2025-12-01 20:22:36 947

原创 【iOS】TableView的优化

UITableView的性能优化涉及到了许多层面,下到底层的Layer属性,上到第三方库SDWebImage与RunLoop,这些东西的实现都十分巧妙,还有很长一段路需要学习这里笔者写一下Tableview 性能优化方法总览实现Tableview的懒加载以及cell的复用(这是优化Tableview最基础的部分,老生常谈了,特别是复用池这一块的内容:将加载过的cell加入到复用池中,需要时取出)

2025-11-30 19:48:55 1018

原创 【iOS】数据持久化

iOS13中只有支持NSSecureCoding协议(父协议为NSCoding)才能支持归档1、自定义一个Person类病实现 NSCoding协议的方法@end//NSCoder是一个抽象类//归档的协议方法//将归档对象序列化//解档的协议方法//将解档对象反序列化@end//NSSecureCoding的协议方法return YES;2、初始化待归档对象病进行归档//归档成二进制数据流NSLog(@"归档错误:%@", error);

2025-11-30 15:33:52 696

原创 【iOS】多线程与GCD

进程与线程之间的关系主要涉及两个方面:新建 - 就绪 - 运行 - 阻塞 - 死亡线程与进程线程和进程的定义线程多线程的生命周期新建 - 就绪 - 运行 - 阻塞 - 死亡简要说明,就是处于运行中的线程拥有一段可以执行的时间(称为时间片),线程的exit与cancel说明:线程的优先级越高,是不是意味着任务的执行越快?线程自信的快慢,除了要看优先级,还要查看资源的大小(即任务的复杂程度)、以及CPU调度情况。在NSThread中,线程优先级threadPriority已经被服务质量quality

2025-11-16 19:42:57 1032

原创 【iOS】内存五大分区

堆是。

2025-11-09 15:21:06 709 1

原创 【iOS】KVO

不使用context,使用keyPath区分通知来源//context的类型是 nullable void *,应该是NULL,而不是nil使用context区分通知来源//定义context//注册观察者//KVO回调。

2025-11-09 14:04:58 599

原创 【iOS】KVC总结

的全称是Key-Value Coding(键值编码),是由NSKeyValueCoding非正式协议启用的一种机制,对象采用这种机制来提供对其属性的间接访问,可以通过字符串来访问一个对象的成员变量或其关联的存取方法(getter or setter)。通常,我们可以直接通过存取方法或变量名来访问对象的属性。我们也可以使用KVC间接访问对象的属性,并且KVC还可以访问私有变量。某些情况下,KVC还可以帮助简化代码。KVC是许多其他 Cocoa 技术的基础概念,比如等等。

2025-10-10 18:10:29 936

原创 【iOS】内存管理初级

当一个对象创建并在堆区申请内存时,对象的引用计数为1;当其他的对象需要持有这个对象时,就需要将这个对象的引用计数加1;当其他的对象不再需要持有这个对象时,需要将对象的引用计数减1;当对象的引用计数为0时,对象的内存就会立即释放,对象销毁。调用alloc、new、copy、mutableCopy名称开头的方法创建的对象,该对象的引用计数加1。调用retain方法时,该对象的引用计数加1。调用release方法时,该对象的引用计数减1。

2025-10-09 18:30:00 979 1

原创 【iOS】alloc、init、new

alloc创建了对象并且申请了一块不少于16字节的内存空间。init其实什么也没做,返回了当前的对象。其作用在于提供一个范式,方便开发者自定义。new其实是alloc+init的一个综合体。

2025-09-27 14:47:05 514

原创 【iOS】AFNetworking

AFNetworking的构成很简单,主要就四个部分:Manager : 负责处理网络请求的两个Manager,主要实现都在中。Reachability : 网络状态监控。Security : 处理网络安全和HTTPS相关的。Serialization : 请求和返回数据的格式化器。

2025-09-13 13:43:07 1166

原创 【iOS】UIViewController

UIViewController生命周期:函数并不会每次创建对象都调用,只有在第一次初始化的时候才会调用,再次创建将不会调用initialize方法。init方法和initCoder方法相似,知识被调用的环境不一样。如果用代码初始化,会调用init方法,从nib文件或者归档(xibstoryboard)进行初始化会调用initCoder。initCoder是NSCoding协议中的方法,NSCoding是负责编码解码,归档处理的协议。loadView:是开始加载view的起始方法,除非手动调用,否则在。

2025-09-11 11:02:01 1080

原创 【iOS】 单例模式

单例模式是一种非常常见、使用频率也很高的一种设计模式。单例能够在许多场合使用,有时候也可以用来保存数据。它(严格单例)存在着以下特点:节省内存;在程序的运行周期中保存数据;只能在自己的类中实现实例;程序的运行周期中,内存不会被释放;类中有且仅有一个实例;

2025-09-09 22:40:00 1166

原创 【iOS】多界面传值

KVO全称KeyValueObserve也就是观察者模式,是apple提供的一套事件通知机制.允许对象监听另一个对应特殊属性的改变,并在改变时接受到该事件.一般继承自NSObject的对象都默认是支持KVO。KVO(Key-Value-Observing,键值观察),即观察关键字的值的变化。首先在子页面中声明一个待观察的属性,在返回主页面之前修改该属性的值。在主页面中提前分配并初始化子页面,并且注册对子页面中对应属性的观察者。

2025-09-07 12:48:06 1132

原创 【iOS】push 和 present

转场动画是下面几个情况:导航控制器的push和pop动画。普通控制器的present和Dismiss动画。

2025-09-06 20:05:56 549

原创 【iOS】 懒加载

懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其getter方法。说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当需要一些资源时,再去加载这些资源。(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 (3)只有当真正需要资源时,再去加载,节省了内存资源。

2025-09-04 23:03:46 437

原创 【iOS】折叠cell

然后在数株中移除,并插到头部,然后重新刷新tableView。如此以来,点击按钮可以实现tableView高度的变化。我们先获取Array中被选中的项目。

2025-09-04 22:44:24 238

原创 【iOS】对象复制与属性关键字

end@end@end// 深拷贝// 深拷贝return 0;我们可以看到无论是copy还是mutableCopy,都是深拷贝,这是因为我们本来就是使用copyWithZone和mutableCopyWithZone进行拷贝的。使用宏和常量所占用的内存差别不大,宏定义的是常量,常量都放在常量区,只会生成一份内存 缺点:编译时刻:宏是预编译(编译之前处理),const是编译阶段。导致使用宏定义过多的话,随着工程越来越大,编译速度会越来越慢。

2025-09-04 21:28:10 1197

原创 AutoLayout与Masonry:简化iOS布局

苹果提供的自动布局(Auto Layout)能够对视图进行灵活有效的布局。但是,使用原生的自动布局相关的语法创建约束的过程是非常冗长的,可读性也比较差。Masonry 的目标其实就是。其实说到本质,它和手动布局是一样的。对一个控件放在哪里,我们依然只关心它的。但手动布局的方式是,一次性计算出这四个值,然后设置进去,完成布局。但当父控件或屏幕发生变化时,子控件的计算就要重新来过,非常麻烦。因此,在自动布局中,我们不再关心的具体值,我们只关心四个量对应的约束。

2025-09-04 21:10:44 414

原创 【iOS】MVC架构

首先,作为一名合格的程序猿,我们在写代码的时候都应该追求美。比如在敲每一行代码的时候,都应该注重代码规范,写出一份看得舒服,让别人也看得懂的代码,这样也能提高效率;比如在设计代码的时候,应该追求的是我怎样才能写出一个好的架构(App 架构类似于现代建筑的脚手架或者是地基,一旦确定,剩下的工作就是在现成的App里添砖加瓦),让我的代码模块化,分工明确,从而提高我的工作效率。高内聚,低耦合。代码均摊,易于扩展,具有易用性。可以说,代码规范,架构模式设计模式是检验一个程序猿水平的重要参考。

2025-08-31 22:31:56 1180

原创 【iOS】设计模式的六大原则

开放封闭原则的意思是: 对拓展开放,对修改关闭。程序中的模块、类、方法应该允许在的前提下进行功能拓展。新增支付时候,只需写一个新类基层Payment而不需要修改原有代码。• UITableView 本身是封闭的,但我们可以通过实现 UITableViewDataSource 和 UITableViewDelegate 协议来扩展它的功能。• 这就是 OCP:Apple 不让你改 UITableView 源码,但提供扩展点给你。2. 分类 (Category)

2025-08-27 16:31:37 1172 2

原创 【iOS】仿写 —— 计算器

在计算器的仿写中,本人首次实际使用MVC构架和Mansory自动布局。

2025-07-29 14:40:25 510 2

原创 【iOS】天气预报仿写总结

其次,UIPageViewController默认的是使用 UIPageViewControllerTransitionStylePageCurl ,是一种仿真的翻书效果,在天气预报中,我们要把它改成StryleScroll。在搜索栏点击城市后显示的未被添加过的城市详情右上角是一个添加,而如果该城市是在主页点的,右上角是一个删除。同时,我们在主页面添加了一个判重逻辑,避免城市重复添加。接收两个通知,一个是搜索页面的城市,另一个是详情页面的删除指令。这个页面要执行两个操作: 点击加号添加城市,删除城市。

2025-07-25 22:27:01 605 3

原创 【iOS】网络请求与异步加载

本文简单介绍了异步加载

2025-07-24 20:40:23 379 2

原创 细说3Gshare 项目中的点赞双向传值

代理”本质上是一个协议(protocol)+ 指针属性 + 回调方法的组合,它允许一个控制器(如 A)把数据传回另一个控制器(如 B)。

2025-07-21 22:21:08 368

原创 iOS —— 3Gshare项目总结与思考

前者为切换的按钮主体,后者为一个辅助按钮,当用户点击文字时,也会触发和前者相同的函数从而实现按钮图标的切换,更加人性化。同时,我设置了管理员密码1 1,用于绕过调试时便捷登陆,不必输入较长密码。本人的登陆页面在最初使用数组储存用户名和密码,后来发现在修改密码时会较为困难,因此我创建了一个单例类。因为文章的格式类似如图,我新建了一个cell用于设置所有类似的页面,textTableViewCell。

2025-07-21 12:12:02 1203

原创 iOS —— 网易云仿写

与网易云相比,我只完成了首页以及“我的”页面的仿写。

2025-07-14 21:07:30 409

原创 Cell的复用与自定义cell

在中,cell通常指的是 UITableViewCell 或 UICollectionViewCell,也就是表格或网格视图中的“单元格”。UITableViewCell 是 Apple 提供的标准类,用于 UITableView;UICollectionViewCell 是用于 UICollectionView;可以使用系统提供的,也可以自定义 cell 样式。比如在我们的微信 在“我”页面中的每一项就是一个cell。每一个 cell 可以显示:图标(imageView)

2025-06-08 16:40:44 1326

原创 iOS —— UI 初探

当然有,除了 presentViewController:animated:completion: 这种。

2025-06-01 18:03:23 1772 1

原创 OC语言学习——Foundation框架回顾及考核补缺

setByAddingObject:向集合中添加一个新元素,返回添加元素后的新集合setByAddingObjectsFromSet:使用NSSet集合向集合中添加多个新元素,返回新集合setByAddingObjectsFromArray:使用NSArray集合向集合中添加多个新元素,返回新集合allObjects:返回集合中所有元素组成的NSArrayanyObject:返回集合中的某个元素。(但是并不保证随机返回集合元素)。containsObject:判断集合是否包含指定元素。

2025-05-25 13:28:26 1442

原创 NSString的三种实现方式

Objective-C中的NSString有三种主要实现方式:__NSCFConstantString、__NSCFString和NSTaggedPointerString。__NSCFConstantString是常量字符串,存储在常量区,不可变,生命周期贯穿整个程序运行期间,创建方式为使用字符串字面量。__NSCFString是动态分配的不可变字符串,通过stringWithFormat:等方法创建,即使内容相同,内存地址也不同。NSTaggedPointerString是64位系统上对短字符串的优化存

2025-05-18 20:41:03 908 1

原创 Oc语言学习 —— Foundation框架总结

因为我们的NSString是不可变的,所以我们只能通过一些方法来在我们原来的字符串后面追加或初始化我们的字符串来间接修改我们的对象,例如:这两种方法都是对象不改变,将新生成的字符串重新赋值给str指针变量。

2025-05-18 15:26:54 1036

原创 Oc语言学习 —— 重点内容总结与拓展(下)

所以对于常量字符串的单例来说,仅仅存储地址,哪怕后面再创建新的字符串,但是只要内容相同,str对象里面存储的该字符串的地址都是一样的。大家哪怕内容相同,自己也是自己的。协议体现的是一种规范,定义协议的类可以把协议定义的方法委托给实现协议的类,这样可以让类定义具有更好的通用性,因为具体的动作将由该协议的实现类去完成。对于ConstantString,我们想查看内存分布情况,直接打印str得到的其实是str这个指针的地址信息,前8位是isa指针,17到24位是对应常量字符串的地址,25~32位是字符串的长度。

2025-05-16 12:15:03 1037

原创 【OC】OC语言学习 —— 重点内容总结与拓展(上)

有三个注意点。

2025-05-16 11:59:19 1190

原创 OC语言学习——Foundation框架(下)

OC集合类可以用于存储数量不等的多个对象,并且可以实现常用的数据结构,例如栈和队列等,除此以外,OC集合还可以用来保存具有映射关系的关联数组。OC的集合大致上可以分为三种体系:NSArray 代表有序、可重复的集合,很像一个数组NSSet 代表无序、不可重复的集合NSDictionary 代表具有映射关系的集合。

2025-05-12 10:23:07 1062

原创 OC语言学习——Foundation框架(上)

NSString代表字符序列不可变的字符串,而NSMutable代表字符序列可变的字符串。

2025-05-10 12:29:42 1162

原创 【OC】OC语言学习——面向对象(下)

OC提供了NSValue、NSNumber来封装C语言基本类型(short、int、float等)。在 Objective-C 中,**包装类(Wrapper Classes)**是用来把基本数据类型(如 int、float、char 等)“包装”为对象的类。因为 Objective-C 是面向对象的语言,有时候我们需要把基本类型当作对象使用,比如:放入 NSArray、NSDictionary 这样的集合中(这些集合只能存放对象);使用对象方法对数值进行操作;与 Foundation 框架接口交互。

2025-05-07 23:30:15 1390

原创 【OC】OC的实例对象,类对象,元类对象

在 Objective-C 中,一切都是对象 —— 包括“类”本身。它背后的运行机制依赖于一个强大的。是 Objective-C Runtime 的三种核心对象,它们构成了类与对象的运行时结构。

2025-05-07 19:39:43 457

原创 【OC】Objective - C初探之面向对象

是以过程(步骤)为中心的编程方式。把一件要做的事,从头到尾,,一步步完成。重点是· 注重(先做什么、后做什么)· 主要用组织代码· 代码容易从上到下直接执行· 小程序简单直接,速度快面向对象以对象(数据 + 行为)为中心的编程方式把现实世界的实体抽象为程序中的对象,每个对象既包含数据(属性),又有能做的事(方法),强调封装📦 继承 多态注重代码模块化,便于维护和扩展适合。

2025-05-05 15:17:16 1151

原创 Leetcode hot 100 个人总结(持续更新)

笨人算法fresh man,如有纰漏万望您拨冗指正,不胜感激。

2025-04-26 19:08:05 1025

空空如也

空空如也

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

TA关注的人

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