自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【iOS】多线程NSOperation,NSOperationQueue

前段时间学习了有关于GCD的内容,这段时间对于的内容再进行一个学习和总结实际上是基于 GCD 更高一层的封装,完全面向对象。但是比 GCD 更简单易用、代码可读性也更高。需要配合来实现多线程。操作的定义:执行操作的含义,换句话说其实就是在线程中执行的那段代码,从GCD层面来类比就相当于我们的一个block在中,我们可以采用他的子类来进行一个封装的操作操作队列:这里的队列是值操作队列,就是用来存放操作的队列.不同于GCD中的一个调度队列的FIFO。

2025-06-08 20:02:56 1117 1

原创 【iOS】 Block再学习

笔者之前学习过block的相关内容,但是掌握不牢,今天再重新学习一遍。

2025-06-08 20:00:00 1212

原创 【iOS】JSONModel源码学习

笔者学习一下有关于JSONModel的源码的内容,来了解它底层的一个实现过程。

2025-06-08 19:56:29 958

原创 【iOS】YYModel源码解析

最近学习一些有关于第三方库源码的内容,把YYModel和JSONModel这两个第三方库的内容看完这里其实我们可以看出YYModel的结构其实是比较简单的,其实只有和两个模块前者将Runtime层级的一些结构体封装到NSObject层以便调用后者负责提供方便调用的接口以及实现具体的模型转换逻辑NSObject+YYModel 中重新定义了两个类,通过它们来使用 YYClassInfo 中的封装。这里笔者学习YYModel主要是为了认识为什么YYModel有更多的性能优势?

2025-06-02 19:53:22 1135

原创 【iOS】ARC 与 Autorelease

今天笔者来学习一下有关于ARC和我们这里的一个Auorelease的内容。

2025-06-02 19:51:41 1049

原创 【iOS】 锁

笔者在之前学习了有关于GCD的内容,今天来学习一下有关于锁的知识常见的各类锁的性能比较:OSSpinLock(自旋锁) -> dispatch_semaphone(信号量) -> pthread_mutex(互斥锁) -> NSLock(互斥锁) -> NSCondition(条件锁) -> pthread_mutex(recursive 互斥递归锁) -> NSRecursiveLock(递归锁) -> NSConditionLock(条件锁) -> synchronized(互斥锁)

2025-05-26 18:22:11 1466

原创 【iOS】 GCD小结

GCD是iOS开发中非常重要的一个内容,笔者今天对于这部分内容做一个介绍,GCD(Grand Central Dispatch)是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上,执行的并发任务。线程池模式:线程池工作队列已经装满了,且在线程池中正在运行的线程数小于可最大线程数。

2025-05-26 18:21:11 1288

原创 iOS 初识RunLoop

注意,RunLoop中的Timer也不一定是准确的,因为RunLoop的执行事件是有一个顺序的,所以我们要处理玩一个事件才可以处理下一个事件,所以按照逻辑上来讲,尽管事件到了我们还是要把上一个事件执行玩才可以执行这个事件,也就是说我们尽管设置了一个是Timer,也要把上一个事件执行完才可以执行下一个任务,所以按道理来说Timer也不一定准确.这个含义其实就是指我们当前的一个RunLoop即将休眠了的状态,我们这里就会释放一个旧池子,然后创建一个新的池子,等到RunLoop退出的时候再次销毁池子.

2025-05-18 22:00:04 1064

原创 iOS 工厂模式

笔者之前学习了有关于设计模式的六大原则,之前简单了解过这个工厂模式,今天主要是重新学习一下这个模式,正式系统性的学习一下这个模式。

2025-05-18 19:11:54 1077

原创 iOS 内存分区

笔者之前学习OC源码的时候,发现对于这里的几个static,extern,const的内容有遗忘,所以这里笔者重新学习一下有关于内存分区的内容。

2025-05-18 19:08:16 1315

原创 【iOS】SDWebImage源码学习

SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能。一个异步的图片加载器。一个异步的内存+磁盘图片缓存支持GIF、WebP图片后台图片解压缩处理确保同一个URL的图片不被多次下载确保非法的URL不会被反复加载确保下载及缓存时,主线程不被阻塞.首先我们先看一下有关于SDWebImage官方给出的一个图:下面我们主要讲一下这几个比较重要的对象。

2025-05-11 19:46:10 886

原创 【iOS】Tagged Pointer

在之前的学习中笔者在字符串章节简单了解过这个后面笔者就没在多了解这部分内容,今天决定比较系统的学习一下有关于这部分内容的知识.

2025-05-11 19:42:49 1273

原创 【iOS】 方法交换

之前看过有关于消息转发的内容,这里我们可以简单看一下有关于iOS的黑魔法,方法交换这个的意思就是我们可以在运行的时候,将方法的实现替换成另一个方法的一个实现.在OC中这个原理是为了实现AOP的编程思想,其中AOP(Aspect Oriented Programming,面向切面编程)是一种编程的思想,区别于OOP(面向对象编程)面向切面编程(Aspect-Oriented Programming,AOP)是一种通过分离横切关注点(Cross-Cutting Concerns)来增强代码模块化的编程范式。

2025-05-04 16:31:34 1669

原创 【iOS】消息流程探索

首先我们先定义两个类,一个类继承自另一个类.这里的打印结果是:这里我们可能会非常疑惑,为什么这里的super class打印出来的还是我们的CJLTeacher这里我们将上面的这个代码重新编译成C这里我们可以看到第二条的super变成了苹果官方文档对其方法解释为:当遇到方法调用时,编译器会生成对以下函数之一的调用:objc_msgSend、objc_msgSend_stret、objc_msgSendSuper或objc_msgSendSuper_stret。

2025-05-04 16:31:03 1204

原创 【iOS】 分类 拓展 关联对象

这里我们就大致明白了我们关联对象的一个set过程,get。

2025-05-04 16:27:07 1295

原创 iOS 类与对象底层原理

对象的isa是指向类,类其实也是一个对象,可以叫做类对象.类对象的位域3指向平果定义的元类元类是系统给的,他的定义和创建都是由编译器玩测的,这个过程中,类的归属来自于元类元类是类对象的类,每一个类都有独一无二的元类来存储类方法的相国信息元类本身是没有名字的,只是因为类与之关联,所以直接采用了类的一个名字这里我们继续用调试来观察所有的对象都是由objc_object继承过来的所有的对象,类,元类都有isa属性.以objc_object为模板创建的对象,都有isa。

2025-04-27 19:13:00 1120

原创 OC底层原理【一】 alloc init && new

这里笔者参考阅读的是objc838系列代码,但是由于笔者的Xcode版本不支持运行该版本,所以笔者采用的是运行objc906的代码,然后对照阅读的Objc838。objc906。

2025-04-20 22:14:06 1080

原创 C++STL语法速记

笔者最近开始重刷算法题,鉴于C++语法的便利,笔者决定简单学习其语法用作写算法题的一个工具,这里不会涉及有关C++底层的内容,大多是一些容器的语法记录。

2025-04-13 22:07:53 669

原创 WCDB入门使用

WCDB 是一个易用、高效、完整的移动数据库框架,它基于 SQLite 和 SQLCipher 开发,在微信中应用广泛,且支持在 C++、Java、Kotlin、Swift、Objc 五种语言环境中使用。之前笔者使用过我们的一个FMDB这个数据库,FMDB库有着麻烦的SQL拼接,难以防止的SQL注入,使用起来也比较麻烦。这里笔者听学长的话,了解到了腾讯微信公司提供的一个开源库。one line of code:WCDB基本上只需要一行代码就可以完成。

2025-04-13 22:07:15 912

原创 【iOS】Blocks

笔者最近看了小白书的Blocks的板块,这篇博客简单总结一下有关于Blocks的内容,笔者也是初次较为深入的学习Block。如有错误,请不吝赐教。带有自动变量(局部变量)的匿名函数。这样我们可以通过函数指针不需要知道函数名都可以调用这个函数,而Block则可以运行我们直接使用匿名函数。自动变量函数的参数静态局部变量静态全局变量全局变量能在函数的多次调用之间传递值的有后面三者。虽然这些变量的作用域不同,但在整个程序当中,一个变量总保持在一个内存区域。

2025-02-19 21:55:32 1124

原创 effective-Objective-C第六章阅读笔记

如果需要并行执行任务并等待结果,但不希望阻塞当前线程(比如主线程),使用 dispatch_group比 dispatch_apply更加合适。阻塞当前线程,可能在当前队列上执行时造成死锁,因此应避免在主队列上调用它。

2025-02-16 22:52:46 1151 4

原创 effective—Objective—C 第七章阅读笔记

首先我们得认识一下我们这里处理转化,无缝桥接。__ bridge 的意思是ARC仍然具备OC对象的所有权,而 __bridge retained则与之相反,以为值ARC要交出对象的所有权。那么这段代码后面就要加上 CFRelease.与之类似,反向转化可以通过bridge_transfer来实现。这三种方式都叫做桥式转化。之所以会出现无缝衔接的内容,是因为:可是,你也许会问:以纯 Objective-C来编写应用程序时,为何要用到这种功能呢?

2025-02-11 18:58:37 884

原创 effective-Objective-C 第五章学习笔记

其实引用计数的内容主要是这一张图片的内容主要有下面三个方法用来操作计数器对象创建出来的时候,他保留计数至少要为1,若想让他继续存活,则要调用retain方法。下面我们来看一个例子,来理解这个概念:其实这段话的意思是我们理解引用计数不是简单的理解为1,而是理解长持有一个数,某些操作增加计数或者是减少计数如果是strong关系。那么这个方法会先保留新值并释放旧值,然后更新实例变量,让他指向新值。假如还未保留新值在释放旧值的时候,两个值有指向同一个对象,先执行的release 可能会导致此对象永远回收,这个

2025-02-06 18:13:27 1544

原创 effective-Objective-C 第四章阅读笔记

如果我们大量的采用这种模式,就会经常性的出现这种代码:``respondsToSelector`来判断是否符合对应的一个条件,但是实际上并不需要这么多的一个判断,我们可以采用一个bool值作为某一个方法是否存在的判断,这样就可以节约很多时间。该模式的主旨是:定义一套接口,某对象如果想接受另一个对象的委托,则需要遵循这个接口,以便成为委托对象,这里主要有两个部分的内容,一个是处理数据的内容被称作数据源,另一个事件处理对象则叫做委托。这样在开发的后续版本,不需要改变公共API,就可以修改后段的一个实现类。

2025-01-24 17:34:41 1980 1

原创 effective Objective—C 第三章笔记

当我们返回一个对象的要求是collection的时候,我们还是尽量返回一个不可变的对象,假设他可以进行一个添加和删除,但是我们要设置成一个不可变的collection,这个不可变collection是内部可变的一个collection的复制。这里他的子类也要使用这个全能初始化方法,但是这里会出现一个问题,也就是我们这里的代码,如果调用他父类的方法就会出现一个问题,创建出了一个长和宽不同的正方形,所以我们需要重写父类的一个方法。我们可以创建属于自己的程序库中所发生的错误指定一个专用的错误范围的字符串。

2025-01-21 20:39:09 665

原创 内存管理(一)

这是笔者对于计算机操作系统中的内存的一个简单学习。

2025-01-20 18:02:37 759

原创 effective-Objective-C 第二章阅读笔记

在对象之间传输数据并执行任务的过程叫做”消息传递“,这部分内容主要有关于运行期环境中各个部分的协同工作的内容@end这里注意我们初始化的函数中注意一个点就是我们对应的属性的修饰符对应起来。copy就用copy方式赋值。关联对象用来解决在某些情况下,有的类的实例是由某种机制创建的,我们无法自己创建一个子类实例,这时候才会用到关联对象的一个内容。比方说:给一个分类添加属性,或者是不能修改类定义的时候,就会变得非常常用。

2025-01-16 20:33:43 4360

原创 Effective Objective-C 第一章阅读笔记

如果这里面调用的函数时多态的,那么对于函数型语言则是通过一个虚方法表来查出应该执行哪一个函数,至于采用消息结构的语言,无论是否多态,总是在运行时才会去查找所要执行的一个方法。上面代码中的someString变量是用来指代一个NSString的类型的,这里所有的对象都是存储到我们的堆空间中的,而不是栈区。我们可以发现他有类型信息,可以更好的描述来常量的含义,这里我们命名常量的时候,如果局限在某一个编译单元中就加字母k,如果常量在类之外可见,则通常以类名为前缀。但是我们在引入协议的时候,就不可以使用向前声明。

2025-01-11 20:57:47 1822

原创 【iOS】MVP模式

笔者在之前的iOS开发中学习了MVC架构,最近偶然看到了有关于MVP的内容,下面是笔者对于这部分的内容的一个个人理解。如有纰漏请,还请不吝赐教。

2024-12-15 15:48:38 1213 5

原创 【iOS】UIImagePickerController

UIImagePickerController是iOS平台上的一个类,用于在应用程序中访问设备的照片库、相机和视频录制功能。它提供了一个用户界面,使用户可以从设备的媒体库中选择照片或视频,或者使用设备的摄像头拍摄照片或录制视频。在这里我们先只介绍一下访问相机和相册这两个功能。下面笔者直接通过一个例子来介绍对应的一个内容viewDidLoad部分[pickImageButton setTitle:@"选择图片" forState:UIControlStateNormal];//设置了一个button。

2024-12-08 20:37:47 535

原创 【iOS】UIPickerView

笔者这周学习了这个UI控件,这个控件和UItableView比较相似,这里笔者简单介绍一下这个控件的用法。

2024-12-08 16:00:49 589

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

笔者这段时间看了一下有关于设计模式的七大原则,下面代码示例均为OC。

2024-11-30 17:48:34 1393 2

原创 【iOS】多线程基础

笔者由于对于GCD不是很了解,导致了项目中网络请求哪部分的一个代码冗长且逻辑混乱,很多时候出现了问题也不知道怎么解决,所以笔者决定学习一下多线程的内容,方便自己之后对于GCD的一些内容的理解。线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。同一进程中内多个线程可以共享代码段,数据段,打开的文件等资源。但是每个线程由自己独立的寄存器和栈,可以保证线程的控制流是独立的优点一个进程中可以有多个线程各个线程中可以并发的执行。

2024-11-30 17:47:50 1400

原创 【iOS】bug调试技巧

在写知乎日报这个项目的过程中我遇到了各式各样的一个bug,一个bug对于一个项目而言往往是非常致命的,我们有时候会因为一个小bug苦苦寻找20,30分钟,然后发现是一个简单的问题,所以笔者为此特地学习了有关于iOS开发中bug调试的内容。

2024-11-23 21:02:03 1209

原创 【iOS】UICollectionView的学习

UICollectionVIew和我们之前的UITableView比较类似,但是UICollectionView可以实现布局的效果,比如说瀑布流布局抑或者是圆环布局,这也是UICollectionView比UITableView强大的地方,这里笔者简单学习了有关于UICollectionView的一些用法,下文笔者来简单介绍一下有关于UICollectionView的一个使用的内容。首先我们先要自定义一个Layout。@end返回一个瀑布流的效果,其实是主要是重写下面这两个函数。

2024-11-23 18:48:11 1227

原创 AFNetworking中的POST和GET请求

笔者之前学习了有关于GET请求的内容,这里重新学习一下有关AFN的POST和GET这两个请求的内容,下文中的API调用的是开源软件Spotify的API。

2024-11-23 16:41:17 914

原创 【iOS】知乎日报第四周总结

这里首页获取三个数据混乱的原因主要还是因为网络请求的异步回调的问题,这里笔者上网搜索了一下相关内容后面采用了一个这个类和一个并行队列来解决,这个类是状态锁,这里笔者还不是很清楚原因,这里可以简单介绍一下状态锁的一个内容:这里笔者给出我下滑加载的部分代码:FMDB库的一个使用这里笔者实现收藏中心采用了一个第三方库FMDB这个库来实现的,首先这个库的是用OC来包装sqlite这个小型数据库,然后我们只需要调用她分装好的一个接口就可以了,这里笔者简单介绍一下使用方法,不涉及原理。创建一个库主要有三种方式来创建

2024-11-17 20:46:56 1010

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

本周笔者因为金工实习整个项目进展比较慢,因为金工实习耽搁了挺长一段时间的,这周项目进展比较缓慢。下面简单介绍一下有关于这周学到的一些内容和遇到的一些问题。

2024-11-10 15:42:53 801

原创 【iOS开发】知乎日报第二周总结

这周笔者主要在完成有关于详情页部分的内容,实现了一个无限右滑的一个效果,以及申请到了评论区的一个数据,开始着手于评论区的实现部分,下面笔者简单总结一下有关于这周遇到的一些问题。

2024-11-03 16:40:40 624

原创 【iOS】知乎日报第一周总结

笔者在本周算是正式开始写项目了,本周主要是大致完成了主页的内容,大致完成了主页面的ui以及实现了点击进入单个cell的效果,但还存在一些小问题,之后找到解决方法会补充上去。

2024-10-27 14:56:19 1495 2

空空如也

空空如也

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

TA关注的人

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