自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【iOS】GCD

iOS开发中较为常用的多线程编程技术——GCD。学习了任务、队列、同步与异步、串行与并行的理解,以及GCD各种APIAPI的应用

2024-07-24 20:06:48 783

原创 【iOS】进程与多线程

iOS开发是单进程,本文针对iOS开发对多线程作以了解,并区分了进程、线程之间的区别和意义,认识了线程的生命周期、线程池的运行策略、简单了解了自旋锁和互斥锁,浅析了atomic原子属性的底层实现是通过自旋锁实现的

2024-07-23 14:48:15 857

原创 【iOS】编译链接

编译链接是一iOS文件从开始到变成可执行的文件的过程,我们不去研究原理,但是对于整个流程的掌握还是很有必要的,想究其底层原理,文章内有贴学习链接

2024-07-22 20:43:01 602

原创 【iOS】内存对齐

内存对齐可以提高CPU的存取效率同时提升安全性,会有部分内存的浪费,但是系统又会根据数据存储情况进行内存优化,尽可能降低内存浪费,这样即保证了性能又减少了浪费

2024-07-22 11:45:20 766

原创 【iOS】Tagged Pointer

Tagged Pointer需要注意的点真多,花了两天时间学习~为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于64位程序,引入Tagged Pointer后,相关逻辑能减少一半的内存占用,以及3倍的访问速度提升,100倍的创建、销毁速度提升

2024-07-22 11:44:39 795

原创 C++入门语法总结和STL回顾

总结了用Cpp写算法题时常用的STL数据结构,比如vector、string、set、map、stack、queue和list,并回顾了C++面向对象的一些基础语法

2024-07-22 09:19:20 920

原创 【iOS】isMemberOfClass&isKindOfClass

对NSObject API中的两个方法 isKindOfClass 和 isMemberOfClass 的实现进行了分析,分别从底层源码和调用结果两个角度验证

2024-07-20 16:00:43 1297

原创 【iOS】static、extern、const、auto关键字以及联合使用

本文详细认识了static、extern以及const关键字的特点和用法,还有他们联合使用的效果,简单认识了auto关键字

2024-07-19 22:00:22 1015

原创 【iOS】内存五大分区

本文认识了计算机RAM内存的五大分区,分析了每个区域的特性和优缺点,并将iOS内存与其他系统进行了区分,总结了堆栈结构、函数栈以及堆栈的联系与区别

2024-07-19 11:18:28 1235

原创 【iOS】类对象的结构分析

本文认识了实例对象、类对象和元类对象三种不同对象之间的联系,了解了一些获取类信息的Runtime API,分析了isa&superclass的指向流程,探究了类的底层结构,并解读其源码,包括属性、对象方法、协议、实例变量以及类方法等信息的存储方式

2024-07-17 20:45:30 1416

原创 【iOS】OC类与对象的本质分析

本文对OC类与对象的本质进行了分析,学习了常用的clang命令,介绍了如何使用LLDB和ViewMemory查看对象的内存大小,简单了解了大小端,并探究了isa指针的源码。

2024-07-16 16:40:02 1126

原创 【iOS】alloc、init和new原理

本文浅看了OC申请内存相关方法的源码,并作一流程图总结

2024-07-16 11:41:26 648

原创 【iOS】KVO相关总结

本篇文章了解了 KVO 机制的进阶使用、使用规范和本质原理。KVO的全称是Key-Value Observing,即键值监听或键值观察,用于监听某个对象属性值的改变KVO是苹果提供的一套事件通知机制(其声明全部在Foundation框架中的里),允许一个对象监听另一个对象指定属性值的改变。当被观察对象属性值发生改变时,会触发KVO的监听方法来通知观察者因为KVO接口声明是,即给NSObject添加的分类Category,所以大多数对象都可以键值观察或键值监听。

2024-06-14 22:07:23 812

原创 【iOS】KVC相关总结

这篇文章总结了 KVC 的进阶使用,包括访问对象、集合、非对象、集合运算符号以及KVC设值和取值原理,还有异常处理调用的应用

2024-06-13 23:03:20 957 2

原创 【iOS】MRC下的单例模式&批量创建单例

最近正在接触MRC,顺带了解了一下MRC下是如何手动管理资源的创建与释放来实现单例的,并且学习了如何简洁地批量创建单例对象。

2024-06-08 00:18:06 1183 1

原创 【iOS】内存泄漏检查及原因分析

迅速膨胀的内存可以很快让程序毙命,所以要多加防范。即使有 ARC(自动引用计数)内存管理机制,但在现实中对象之间引用复杂,循环引用导致的内存泄漏仍然难以避免,所以关键时刻还要自力更生。分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的。开启了ARC并不是就不会存在内存问题,苹果有句名言:ARC is only for NSObject。使用ARC的项目,一般内存泄漏都是 malloc、自定义结构、资源引起的,多注意这些地方进行分析。

2024-06-05 00:07:12 1219

原创 【iOS】didReceiveMemoryWarning实例方法

iPhone下每个App可用的内存是被限制的,如果一个App使用的内存超过20M,则系统会向该App发送(内存警告)消息,收到此消息后,App必须正确处理,否则可能出错或出现内存泄漏。且对相关方法loadView/viewDidLoad/viewDidUnload/initWithNib/initWithCoder:进行了总结。

2024-05-28 21:51:29 1246 1

原创 Lookin高效调试iOS App的UI

Lookin 可以查看与修改 iOS App 里的 UI 对象,类似于 Xcode 自带的 UI Inspector 工具,或另一款叫做 Reveal 的软件。

2024-05-26 23:36:25 1293

原创 《Effective Objective-C 2.0》读书笔记——协议与分类

协议(protocol)和分类(category)是OC的两个重要的语言特性。理解并运用得当,可令代码易读、易维护且少出错。

2024-05-24 11:04:21 391

原创 《Effective Objective-C 2.0》读书笔记——接口与API设计

在构建应用程序时,可能会将其中的代码用在后续项目或供他人集成在别的项目,因此,很少有那种写完就不再复用的代码。编写接口时就会将其设计成易于复用的形式,这需要用到OC语言中常见的编程范式(paradigm),同时还需了解各种可能碰到的陷阱。

2024-05-24 11:02:16 659

原创 《Effective Objective-C 2.0》读书笔记——对象、消息、运行期

对象之间能够关联与交互,这是面向对象语言的重要特征。本章讲述这些特,并深入研究代码在运行期的行为。Runtime就是为程序运行起来后提供相关支持的代码,它提供了一些使得对象之间能够传递消息的重要函数,并且包含创建类实例所用的全部逻辑。

2024-05-23 20:40:56 1312

原创 《Effective Objective-C 2.0》读书笔记——熟悉Objective-C

Objective-C在C语言基础上添加了面向对象特性,代码十分易读,但仍有许多微妙细节需要注意,而且还有许多容易为人所忽视的特性。另一方面,有些开发者并未完全理解或是容易滥用某些特性,导致写出来的代码难于维护且不易调试。

2024-05-23 19:43:31 1406

原创 【C语言】位域(位段、位字段)

位域是C语言中乏人问津的特性,是一种数据结构,其主要作用是调整成员变量的位置,而且是OC委托模式中缓存方法响应能力的最佳途径,故作此篇了解!

2024-05-22 16:34:09 969

原创 Blocks —— 《Objective-C高级编程 iOS与OS X多线程和内存管理》

Block相关知识以及Block在OC中的使用分析,了解了一点C++的特有功能

2024-03-17 20:20:25 3422 2

原创 【iOS】UICollectionView使用

总结了UICollectioinView的基本使用、参差瀑布流式和圆环式布局。其实算是特殊Flow布局的UITableView,但简单的列表仍可以使用UITableViewUICollectionView最大的优势就是通过自定义Layout,实现cell的布局,整体的思路就是:通过一些几何计算,设置好每个item的布局位置和大小一篇较为详细的 UICollectionView 使用方法总结

2024-01-21 20:09:56 1896

原创 【iOS】UIColor、CGColor、CIColor的区别和联系

UIColor是UIKit中用于表示颜色的类,一个UIColor对象包含了颜色和透明度的值,可以用来表示不同颜色空间(RGB、HSB)的颜色。UIColor提供了各种便捷的方法创建和管理颜色,正如上面提到的,可以使用与定义的颜色常量,也可以使用RGB或HSB的值来自定义颜色。CGColor是Core Graphics框架(Apple的绘图框架)中用于表示颜色的数据类型,本质是一个结构体,是一种低级的颜色表示方式,更接近图形底层,提供了底层的图形渲染和绘制功能。CGColor实际上是指向CGColorRef的

2024-01-14 15:12:10 1352

原创 【iOS】数据存储方式总结(持久化)沙盒结构

在iOS开发中,我们经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等,本篇文章将介绍六个主要的数据存储方式。在研究存储方式之前,我们有必要先研究一下这些文件会存储到什么地方,这就需要我们了解iOS App特有的沙盒机制

2024-01-12 16:30:24 1647

原创 【iOS】数据持久化(四)之FMDB基本使用

FMDB是iOS开发中的一个轻量级第三方数据库框架,它以OC的方式封装了SQLite的C语言接口,省去了冗余的C语言代码,且更加面向对象,操作方便FMDatabase:此类的一个实例代表一个SQLite数据库,也有许多执行SQL语句的方法FMResultSet(结果集):使用FMDatabase执行SQLite查询语句后的结果集FMDatabaseQueue(数据库队列):用于在多线程中执行多个查询或更新,它是线程安全的。

2024-01-12 16:17:32 1562

原创 【SQLite】SQLite3约束总结

约束是在数据库表中的某列字段上强制执行的规则,用以限制插入表中的数据类型,确保数据库中的数据的准确性和可靠性约束分为列级约束和表级约束,前者适用于列,后者应用于整个表。什么是约束NOT NULL 约束DEFAULT约束UNIQUE约束PRIMARY KEY约束CHECK约束删除约束

2023-12-02 21:56:17 1652

原创 【iOS】数据持久化(三)之SQLite3数据库

本文介绍SQLite的使用 数据库(Database)是根据数据结构来组织、存储和管理数据的仓库数据库大致分为两种:关系型数据库(主流)、对象型数据库SQLite。本文总结了在iOS开发中用OC语言如何去使用SQLite数据库,介绍了SQLite相关函数,以及SQLite的基本语句iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦,于是就出现了一系列将SQLite封装的库:CoreData(Apple官方)、FMDB(第三方),后

2023-12-02 16:51:32 1969 1

原创 【iOS】数据持久化(二)之归档和解档(iOS 13以后)

简单对比了MJExtension、JSONModel和YYModel第三方库在iOS中,对象的序列化和反序列化分别使用和两个类,我们可以把一个类对象进行序列化然后保存到文件中,使用时再读取文件,把内容反序列化出来。这个过程通常也被称为对象的编码(归档)和解码(解档)归档一般保存自定义对象、自定义对象数组,由于自定义对象不具有归档的性质,所以只有遵循了NSCoding协议的类才可以归档。

2023-11-23 22:31:13 1872

原创 【iOS】数据持久化(一)之Plist文件、Preference(NSUserDefaults类)

Plist文件(属性列表)是将某些特定的类,通过XML文件的方式保存在目录中。什么是 XML?可扩展标记语言 (XML) 允许您以可共享的方式定义和存储数据。XML 支持计算机系统(如网站、数据库和第三方应用程序)之间的信息交换。预定义的规则简化了在任何网络上以 XML 文件的形式传输数据的过程,接收者可以使用这些规则准确高效地读取数据。Perference(偏好设置)顾名思义就是专门用来存储系统的偏好配置、用户设置的参数和App的状态等少量信息的,一般不保存其他数据

2023-11-23 22:29:11 1192

原创 【iOS】将网络请求封装在一个单例类Manager中(AFNetworking、JSONModel)

项目开发中会请求大量不同的API,若将网络请求三板斧直接写在Controller中会代码十分冗杂,干脆直接将和JSONModel封装到一个全局的Manager单例类中,在Manager类中进行网络请求和数据解析。可以将不同的请求分别写成不同的单例方法,而且代码简单易懂

2023-11-14 11:27:27 672

原创 【iOS】JSONModel的基本使用

简单来说就是调用第三方开源库JSONModel可以简化相互转化这一流程当我们向服务器发送网络请求之后,通过JSONModel把请求下来的json数据解析成我们自定义的继承于JSONModel的XXXModel类,进而转化成我们熟悉的数据结构赋值给对象,供我们进行访问JSONModel不仅使用非常方便,而且还会检查JSON数据的完整性,如果JSON数据不完整会返回nilJSONModel还提供了基本的数据类型转换,比如服务器错将数字传成字符串的话,JSONModel也会帮你转换成你期望的类型。

2023-11-13 22:47:01 1054

原创 【iOS】知乎日报前三周总结

对近期仿写知乎日报App过程中所遇到的问题进行总结

2023-11-05 21:54:59 882

原创 【iOS】JSON解析

JSON在Web开发和网络通信和传输中广泛应用,常用于存储和传输数据,这些数据一般也都是JSON格式,可以说绝大多数网络请求传输的数据都是JSON格式在之前有关网络请求文章中,实现了网络数据加载流程,并对加载下来的JSON数据通过类方法,进行了简单的解析本篇文章我们详细分析一下这个类方法如何处理我们请求下来的数据,并将这些数据合理地、规范地使用和存储将这段URL输入到浏览器后可以看到返回的就是字符串:JSON就是一段纯文本的数据字符串,可对象化的结构(字典、数组、字符串、数字等数据类型),具有简洁、易读的特

2023-10-21 15:43:27 203

原创 【iOS】AFNetworking的基本使用

是一款cocoapods的网络请求库,在Foundation框架基础上,提供了一套简单易用的接口,用于执行各种网络操作,使开发者请求更加便利使用AFNetworking其实就是简化了我们使用NSURLSession的流程对于开发者来说,利用AFNetworking框架,隐藏了请求具体的内部实现,只需输入请求地址及参数,就可以返回请求的资源数据。

2023-10-21 12:12:39 787

原创 【iOS】简单的网络请求

应iOS小组要求,仿写知乎日报需要实现网络请求并解析JSON格式数据,这篇文章仅对基本的网络请求和iOS中的JSON解析作以记录,还涉及到RunLoop的一点小插曲,具体请求过程和原理以后会详细学习!🙏

2023-10-20 22:21:10 619

原创 【iOS】ViewController生命周期

了解ViewController生命周期之前,我们首先认识一下ViewController的结构了解了的生命周期后,就可以在合适的时机(重写的方法里)根据需求自定义想要实现的交互事件、代码逻辑。

2023-10-20 09:36:28 582

原创 【iOS】UITableView总结(Cell的复用原理、自定义Cell、UITableViewCell协议方法)

列表的特点:UITableViewDataSourceUITableView作为视图,只负责展示,协助管理,不管理数据需要开发者为UITableView提供展示所需要的数据及Cell通过delegate的模式,开发者需要实现UITableViewDataSourceUITableViewCell默认提供的样式都是常用的cell布局当你需要66个cell来展示数据时,而可视区至多显示13个cell,开始cell为空,系统会先创建13个cell并设置自定义的做标记,滑动tableView,滑出可视区的cell

2023-10-20 00:46:16 885

空空如也

空空如也

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

TA关注的人

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