- 博客(53)
- 收藏
- 关注
原创 Blocks —— 《Objective-C高级编程 iOS与OS X多线程和内存管理》
Block相关知识以及Block在OC中的使用分析,了解了一点C++的特有功能
2024-03-17 20:20:25 3233 2
原创 【iOS】UICollectionView使用
总结了UICollectioinView的基本使用、参差瀑布流式和圆环式布局。其实算是特殊Flow布局的UITableView,但简单的列表仍可以使用UITableViewUICollectionView最大的优势就是通过自定义Layout,实现cell的布局,整体的思路就是:通过一些几何计算,设置好每个item的布局位置和大小一篇较为详细的 UICollectionView 使用方法总结
2024-01-21 20:09:56 1303
原创 【iOS】UIColor、CGColor、CIColor的区别和联系
UIColor是UIKit中用于表示颜色的类,一个UIColor对象包含了颜色和透明度的值,可以用来表示不同颜色空间(RGB、HSB)的颜色。UIColor提供了各种便捷的方法创建和管理颜色,正如上面提到的,可以使用与定义的颜色常量,也可以使用RGB或HSB的值来自定义颜色。CGColor是Core Graphics框架(Apple的绘图框架)中用于表示颜色的数据类型,本质是一个结构体,是一种低级的颜色表示方式,更接近图形底层,提供了底层的图形渲染和绘制功能。CGColor实际上是指向CGColorRef的
2024-01-14 15:12:10 1218
原创 【iOS】数据存储方式总结(持久化)沙盒结构
在iOS开发中,我们经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等,本篇文章将介绍六个主要的数据存储方式。在研究存储方式之前,我们有必要先研究一下这些文件会存储到什么地方,这就需要我们了解iOS App特有的沙盒机制
2024-01-12 16:30:24 1412
原创 【iOS】数据持久化(四)之FMDB基本使用
FMDB是iOS开发中的一个轻量级第三方数据库框架,它以OC的方式封装了SQLite的C语言接口,省去了冗余的C语言代码,且更加面向对象,操作方便FMDatabase:此类的一个实例代表一个SQLite数据库,也有许多执行SQL语句的方法FMResultSet(结果集):使用FMDatabase执行SQLite查询语句后的结果集FMDatabaseQueue(数据库队列):用于在多线程中执行多个查询或更新,它是线程安全的。
2024-01-12 16:17:32 1265
原创 【SQLite】SQLite3约束总结
约束是在数据库表中的某列字段上强制执行的规则,用以限制插入表中的数据类型,确保数据库中的数据的准确性和可靠性约束分为列级约束和表级约束,前者适用于列,后者应用于整个表。什么是约束NOT NULL 约束DEFAULT约束UNIQUE约束PRIMARY KEY约束CHECK约束删除约束
2023-12-02 21:56:17 1366
原创 【iOS】数据持久化(三)之SQLite3数据库
本文介绍SQLite的使用 数据库(Database)是根据数据结构来组织、存储和管理数据的仓库数据库大致分为两种:关系型数据库(主流)、对象型数据库SQLite。本文总结了在iOS开发中用OC语言如何去使用SQLite数据库,介绍了SQLite相关函数,以及SQLite的基本语句iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦,于是就出现了一系列将SQLite封装的库:CoreData(Apple官方)、FMDB(第三方),后
2023-12-02 16:51:32 1429 1
原创 【iOS】数据持久化(二)之归档和解档(iOS 13以后)
简单对比了MJExtension、JSONModel和YYModel第三方库在iOS中,对象的序列化和反序列化分别使用和两个类,我们可以把一个类对象进行序列化然后保存到文件中,使用时再读取文件,把内容反序列化出来。这个过程通常也被称为对象的编码(归档)和解码(解档)归档一般保存自定义对象、自定义对象数组,由于自定义对象不具有归档的性质,所以只有遵循了NSCoding协议的类才可以归档。
2023-11-23 22:31:13 1723
原创 【iOS】数据持久化(一)之Plist文件、Preference(NSUserDefaults类)
Plist文件(属性列表)是将某些特定的类,通过XML文件的方式保存在目录中。什么是 XML?可扩展标记语言 (XML) 允许您以可共享的方式定义和存储数据。XML 支持计算机系统(如网站、数据库和第三方应用程序)之间的信息交换。预定义的规则简化了在任何网络上以 XML 文件的形式传输数据的过程,接收者可以使用这些规则准确高效地读取数据。Perference(偏好设置)顾名思义就是专门用来存储系统的偏好配置、用户设置的参数和App的状态等少量信息的,一般不保存其他数据
2023-11-23 22:29:11 993
原创 【iOS】将网络请求封装在一个单例类Manager中(AFNetworking、JSONModel)
项目开发中会请求大量不同的API,若将网络请求三板斧直接写在Controller中会代码十分冗杂,干脆直接将和JSONModel封装到一个全局的Manager单例类中,在Manager类中进行网络请求和数据解析。可以将不同的请求分别写成不同的单例方法,而且代码简单易懂
2023-11-14 11:27:27 638
原创 【iOS】JSONModel的基本使用
简单来说就是调用第三方开源库JSONModel可以简化相互转化这一流程当我们向服务器发送网络请求之后,通过JSONModel把请求下来的json数据解析成我们自定义的继承于JSONModel的XXXModel类,进而转化成我们熟悉的数据结构赋值给对象,供我们进行访问JSONModel不仅使用非常方便,而且还会检查JSON数据的完整性,如果JSON数据不完整会返回nilJSONModel还提供了基本的数据类型转换,比如服务器错将数字传成字符串的话,JSONModel也会帮你转换成你期望的类型。
2023-11-13 22:47:01 968
原创 【iOS】JSON解析
JSON在Web开发和网络通信和传输中广泛应用,常用于存储和传输数据,这些数据一般也都是JSON格式,可以说绝大多数网络请求传输的数据都是JSON格式在之前有关网络请求文章中,实现了网络数据加载流程,并对加载下来的JSON数据通过类方法,进行了简单的解析本篇文章我们详细分析一下这个类方法如何处理我们请求下来的数据,并将这些数据合理地、规范地使用和存储将这段URL输入到浏览器后可以看到返回的就是字符串:JSON就是一段纯文本的数据字符串,可对象化的结构(字典、数组、字符串、数字等数据类型),具有简洁、易读的特
2023-10-21 15:43:27 181
原创 【iOS】AFNetworking的基本使用
是一款cocoapods的网络请求库,在Foundation框架基础上,提供了一套简单易用的接口,用于执行各种网络操作,使开发者请求更加便利使用AFNetworking其实就是简化了我们使用NSURLSession的流程对于开发者来说,利用AFNetworking框架,隐藏了请求具体的内部实现,只需输入请求地址及参数,就可以返回请求的资源数据。
2023-10-21 12:12:39 648
原创 【iOS】简单的网络请求
应iOS小组要求,仿写知乎日报需要实现网络请求并解析JSON格式数据,这篇文章仅对基本的网络请求和iOS中的JSON解析作以记录,还涉及到RunLoop的一点小插曲,具体请求过程和原理以后会详细学习!🙏
2023-10-20 22:21:10 571
原创 【iOS】ViewController生命周期
了解ViewController生命周期之前,我们首先认识一下ViewController的结构了解了的生命周期后,就可以在合适的时机(重写的方法里)根据需求自定义想要实现的交互事件、代码逻辑。
2023-10-20 09:36:28 552
原创 【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 699
原创 【iOS】自定义Cell
大部分的情况下,我们都会选择自定义Cell的方式来加载列表中的每一个数据,因为大部分情况下是无法满足我们多样化的需求的自定义Cell我们就用注册的方式进行cell的复用第一步、创建tableView并设置代理第二步、创建自定义cell类MyCell(继承于UITableViewCell)self.majorLabel.text = @"自定义Title";控件的布局通常要放在中,这样可以保证在。
2023-10-20 00:45:40 82
原创 【iOS】属性传值、代理传值(委托)、通知传值、KVO传值、Block传值、单例传值
在开发中经常需要不同页面间进行信息传递,经过了解,页面间传值有八大传值方式,本篇文章中我们就了解并比较比较常用的几种传值方式(五大传值、单例传值)运行结果图示放在每个传值方法的结尾!本篇文章详细地介绍了开发过程中常用的页面传值方式! 😶🌫️
2023-10-20 00:25:56 203
原创 【Objective-C】浅析Block及其捕获机制
Block (块),封装了函数调用以及调用环境的 OC 对象,Objective-C闭包(可以在内部访问外部的值),相当于C语言的函数指针,把一个函数写在一个函数内部,而OC并没有函数(方法)嵌套这一语法作用域的原因,全局变量哪里都可以直接访问,所以不用捕获;局部变量,外部不能直接访问,所以需要捕获;auto 类型的局部变量可能会销毁,其内存会消失,block 将来执行代码的时候不可能再去访问那块内存,所以捕获其值;static 变量会一直保存在内存中, 所以捕获其地址即可
2023-10-20 00:23:15 4421
原创 【iOS】MVC模式
MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,ta最早出现在SmallTalk语言中。现在,很多计算机语言和架构都采用了MVC模式。MVC模式概述MVC模式是一种设计模式,由3部分组成,这3部分的作用如下:模型(Model)。保存应用数据的状态,统一管理一些数据视图(View)。存放视图,为用户展示信息控制器(Controller)。接受用户请求,统一调控程序的所有工作,ta负责处理Vie
2023-10-20 00:20:28 668
原创 【iOS】iPhone计算器仿写
仿写了iPhone上的计算器,可以进行四则运算多项式的计算。整体设计模式为MVC模式UI布局调用了CocoPods中的Masonry库实现简易四则运算。
2023-10-07 22:45:14 262 2
原创 (数据结构&C语言)实现简易四则运算
这篇文章介绍多项四则混合运算表达式的算法,用于之后仿写iOS计算器App。混合运算需要注意很多问题,尤其是算数的优先级,如果输入进来一串表达式字符串,我们应该如何处理这段字符串从而算出答案呢?主要在与理解,中缀转后缀、后缀的计算这些算法过程,尤其注意表达式合法性的判断。
2023-10-07 22:43:20 478
原创 【iOS】push&pop和present&dismiss的区别及混用
在开发过程中,我们有时会遇到界面切换问题,有两种基本的方式可以实现界面切换:push和present都可以推出新的界面先在window上加一个navigation,然后以VCRoot作为navigation的根视图进行导航接下来在VCRoot界面使用push和pop切换其他界面present与dismiss对应现在新版本的present并没有将新视图显示完全,因此可以拖拽新视图返回上一层级要想将present来的视图显示完全,占满整个屏幕,可以使用以下代码:present和pop不同点从上
2023-09-17 15:10:07 149
原创 【Objective-C】对深浅拷贝的理解
实现对自定义对象的拷贝,需要遵守NSCopying 协议,并实现方法。如果要浅拷贝,方法就返回当前对象如果要深拷贝,方法中就创建新对象,并给希望拷贝的属性赋值,然后将其返回。如果有嵌套的子模型也需要深拷贝,那么**子模型也需符合NSCopying 协议且在属性赋值时调用子模型的copy方法,以此类推。@end@end@end//调用了嵌套子模型Dog的copy方法进行深拷贝@end如果自定义对象支持可变拷贝和不可变拷贝,那么还需要遵守。
2023-09-16 18:43:49 62
原创 【iOS】享元模式
主要学习享元模式(多对象的复用)这一结构设计模式,利用享元思想写了一个百花池demo,再回顾了UITableViewCell的复用
2023-09-15 22:18:29 115
原创 【iOS】文件(对象数据)的归档和解档
本文对iOS开发中数据持久化方法之一 --- 归档解档进行了学习,包括对单个对象、自定义对象、多个对象的归档和解档
2023-09-10 16:17:57 306
原创 【iOS】基础组件及UI布局—续
到这里终于是完成了实验室布置的UI学习任务,在UIKit中还有许多待学习的控件以及高级的布局、协议。由于本篇以及上一片文章中一些控件的初始化方式已是陈年老旧,本人将在以后的学习中将不断更新UI控件的使用并灵活使用苹果官网的文档进行查阅摒弃某些已经包浆的UI使用方案。
2023-08-10 20:49:16 179
原创 【Objective-C】Foundatio框架详解
OC学习,NS这个前缀来源于乔布斯Jobs当年被Apple公司股东开除后,创立的NextStep公司的缩写,ta也是cocoa框架的发源地
2023-05-28 13:29:10 127
原创 【Objective-C】OC前置知识
认识了OC基本语法框架中#import与#include的区别,autorelease自动释放池的作用,面向对象与面向过程的区别
2023-05-03 16:19:36 92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人