自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 「OC」小白书读书笔记——Block的相关知识(上)

在之前的OC学习之中使用了很多关于Block的内容,包括但不限于网络请求后的回调操作,block的跨界面传值等,但是本人还是对block这个概念比较模糊,于是就在网上学习一些相关的知识进行补充前面我们知道,block的结构体之中时候isa指针的,这其实意味着,block其实是作为一个类存在的,那我们就来探究一下block的类。NSLog(@"block1的类:%@",[block1 class]);NSLog(@"block2的类:%@",[^{} class]);

2025-02-21 00:22:44 804

原创 「OC」__bridge关键字的使用

在学习小白书关于引用计数之中Foundation框架和框架相互转化后的相关内容,学习到了__bridge这个关键字,因此对其进行学习。

2025-02-21 00:22:11 245

原创 Effective Objective-C 2.0 读书笔记——内存管理(下)

对象在经历其生命期后 ,最终会为系统所回收 ,这时就要执行dealloc方法了。在每个对象的生命期内,此方法仅执行一次,也就是当保留计数降为0的时候。在这个方法之中,主要就是释放对象所拥有的引用。比如CoreFoundation 对象就必须手工释放,因为它们是由纯C的API 所生成的。在dealloc方法中,通常还要做一件事,那就是把原来配置过的观测行为都清理掉。之前讲到通知传值就有说到,我们当不需要监听后就需要在dealloc函数当中将注册的通知中心进行销注。

2025-02-17 00:07:08 1147

原创 Effective Objective-C 2.0 读书笔记——大中枢派发

队列特定数据允许你将任意数据(以键值对形式)关联到一个特定的 GCD 队列上。这个数据就像“标签”一样,可以让你在执行任务时知道当前任务属于哪个队列。

2025-02-17 00:06:38 1471

原创 Effective Objective-C 2.0 读书笔记——内存管理(上)

在Objective-C中,内存管理是程序开发中不可或缺的一部分,而自引用计数()是一种自动化的内存管理技术。本文是对自动引用计数的简单学习,特此进行记录。

2025-02-13 11:33:48 1437

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

协议定义了一系列方法,遵从此协议的对象应该实现它们,我们可以用协议把自己所写的API 之中的实现细节隐藏起来,将返回的对象设计为遵从此协议的纯i d类型。这样做可行,但不太理想。其实就是不命名的分类,没有名字的分类自然没办法在其他地方被应用,这就引申出我们使用它的场景——我们在编程的过程之中只需要对外公布的那部分内容公开,那么不公开的就会被放在。由于我们在编写功能较多的类时,一般都会给每一个代码开辟一个分类,让他负责一部分的功能,但是我们在编写分类时,尽量不要在分类之中添加对应属性,所有的属性都应该在。

2025-02-13 11:33:06 1995

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

所有对象均要初始化。我们知道NSMutableSet的性质,当我们加入一个一模一样的元素时,set 里仍然只有一个对象,因为刚才要加入的那个数组对象和set 中已有的数组对象相等,所以set 并不会改变。的方法作为全能的初始化方法,然后就在剩下的初始化方法之中调用我们的全能初始化方法,当底层数据存储机制改变时,只需修改此 方法的代码就好,无须改动其他初始化方法。由于是继承于矩形类,我们在自定义正方形的初始化方法时,也要注意到我们也有可能调用父类的初始化方法,为了避免出现未知的问题,我们需要重写父类之中的。

2025-02-04 10:23:40 1454 1

原创 Effective Objective-C 2.0 读书笔记——类对象

在学习消息转发之中的动态方法解析,对如何获取实例方法列表和类方法列表有些许疑问。在使用class方法,对NSObject的实例对象使用class方法,和对NSObject直接使用class方法,得到的结果是一样的,都是获得NSObject的类对象。这是为什么呢?按理来说对获取的是元类对象似乎更合逻辑其实这里指的是类本身,而不是所谓的类对象。所以我们对单纯指向的一个类使用一次class方法得到的就是类对象,如果我们想要获得元类对象的话应该对其得到的类对象在进行一次class在 class。

2025-02-04 10:23:00 585

原创 Effective Objective-C 2.0 读书笔记—— 消息转发

在前面我学习了关联对象和的相关内容,初步了解了OC的动态机制,在我们的的执行操作之中,我们提到了,如果对象接受了无法解读的消息之后,就会进行消息转发。那么什么消息可以被理解呢?最基本的就是,我们的程序要实现对应的方法,由于OC动态语言的特性,我们在编译期的时候仍可以在类之中添加方法,所以当对象接受到无法解析的消息时就会启动消息转发机制消息转发一共由两种情况动态方法解析(Dynamic Method Resolution)

2025-01-30 16:36:05 1756

原创 Effective Objective-C 2.0 读书笔记—— 方法调配(method swizzling)

前面我们说到了,我们在调用方法时,实际上就是在调用这个C语言函数,让OC之中的方法能够被成功解析。那么,就有一个随之而来的问题,我们是否可以在选择子有具体对应方法时,在运行期之中对其进行改变?这个答案是肯定的,这个方法可以让我门不需要源代码,也不需要继承子类来覆写方法就能改变这个类本身的功能,这样子这个新功能就能够在所有的类中的实例中生效,这个方法我们就称之为方法调配(method swizzling)在运行期,可以向类中新增或替换选择子所对应的方法实现。

2025-01-30 16:35:47 1271

原创 Effective Objective-C 2.0 读书笔记—— objc_msgSend

消息其实就是由接受者,选择子和方法参数所构成,给对象发送消息其实就是相当于在该对象之中调用方法。通过,方法的调用变得非常灵活,可以在运行时根据对象和方法选择器找到并执行相应的方法。这个机制为我们后面学习的动态方法解析、消息转发、方法交换等强大的特性做了铺垫。

2025-01-26 10:53:07 1653 1

原创 Effective Objective-C 2.0 读书笔记——关联对象

暑假的任务是学习Effective Objective-C 2.0书上的相关内容,今天终于开始着手写读书笔记,希望能够在寒假多发两篇吧其实关联对象一定程度上是等同于在子类之中添加属性的,只是相对来说,使用关联对象会比写一个子类并且调用其中的方法更加节约资源一点,本质上其实就给我们提供了一个动态修改的空间,更加的灵活。

2025-01-26 10:49:20 1527

原创 知乎日报——第四周

完成了离线缓存功能,在网络请求受阻的情况下,可以使用缓存当中的信息,这样加载过的信息在没有网络的情况下也可以获取信息。到此为止,知乎日报的内容已经大致完成,剩下一些细节还需要慢慢的完善,通过知乎日报这个项目,确实逐步了解了如何用MVC的架构去写一个稍微完整的项目,学习了许多新的知识以及第三方库。当然过程之中仍然暴露了许多之前从未想过到的问题,还是认识到了自身的不足,还是希望自己能够在学习路上越来越精进自己。

2024-12-15 21:35:58 938

原创 「iOS」通过CoreLocation Framework深入了解MVC架构

在这个学期的前段时间进行了MVC的相关学习,并且使用MVC完成了知乎日报奥的项目,加上学习的一些博客,开始对MVC这个架构有着更加深刻的理解,也体会到了MVC架构之中的缺点,这篇文章就是利用CoreLocation 这个原生关于定位的架构,来总结MVC的一些使用技巧和理解。其实这篇文章写着写着,和前面写的五大传值方法其实有些重合,主要就是当时在学习传值技巧的时候还没有学到MVC架构,之前的学习还是停留在较为表面的,通过这次学习加深了对传值和MVC架构结合的理解。

2024-12-15 21:30:34 1305 1

原创 「OC」GCD的相关练习

为了掌握GCD的相关用法,我让GPT给我出了十道与GCD操作相关的题目,来巩固我对GCD的用法你需要在后台线程中执行多个耗时的计算任务(如下载多个文件或处理数据),然后将结果汇总并更新 UI。在后台线程中并行执行多个任务。等所有任务完成后,汇总结果并在主线程中更新 UI。GCD的使用确实是多线程的一个难点,通过完成以上的任务,我更深刻的掌握了GCD的相关用法,希望能对寒假的项目产生帮助。

2024-12-08 22:44:54 1194

原创 「OC」多线程(三)——NSOperation

在写了知乎日报之前学习了相关的GCD和NSThread的相关内容,然后在知乎日报写完之后,我继续开始OC之中多线程的NSOperation的学习。由于之后肯定是要对和SDWebImage的源码继续相关学习,所以学习NSOperation的相关内容也是给后面做铺垫。NSOperation 是苹果公司对 GCD 的封装,完全面向对象,并比GCD多了一些更简单实用的功能,所以使用起来更加方便易于理解。NSOperation 和NSOperationQueue 分别对应 GCD 的 任务 和 队列。

2024-12-08 22:29:33 816

原创 「OC」知乎日报——第三周

本周完成了知乎日报的评论区功能,实现了用UITextView和富文本字符串结合实现了评论区的展开和回收,学会使用Masnory实现评论区的自定义行高,修改了原先详情页的点赞收藏状态的逻辑问题和滚动视图初始位置不符的问题。关于评论区展开大致有三个要点,首先是判断这个评论是否是否有回复,第二个就是判断textView之中文字的行数,最后一个就是当前textView的文字需要展开的时候进行的相关操作这些就是对应的短评和长评的Model,接下来还需要给我们写一个相关的网络申请在我们的NetworkManager

2024-12-01 19:54:25 744

原创 Xcode——LLDB Debugger 与断点调试学习

在前几日完成知乎日报项目的过程之中,运行调试是在写项目过程之中最头疼的事情,偶然看到隔壁的倪神在学习与LLDB相关的BUG调试的内容,于是就对LLDB进行学习了解LLDB 是 Apple 提供的一个强大且现代化的调试工具,主要用于调试 macOS 和 iOS 应用程序。它是 Xcode 默认的调试器,具有高效、快速的特点,支持多种编程语言,包括 Objective-C、Swift 和 C/C++。LLDB 绑定在 Xcode 内部,存在于主窗口底部的控制台中。

2024-12-01 19:50:07 1365

原创 知乎日报——第二周

本周主要完成了知乎日报的详情页面,实现了无限右滑和动态申请详情页的内容,实现了预先加载。以及通过位置获取相应的格外信息,使用字典进行缓存的相关操作。大致内容如下本周完成的无限右滑以及相关的预加载等操作,确实花费了不少的时间,下个星期的目标就是完成,评论区的相关内容,用富文本以及textView完成展开评论区的相关内容。

2024-11-24 22:06:11 920

原创 SQLite3语句以及用实现FMDB数据存储的学习

这周开始挑选完项目,我们就要进入项目内容的相关学习,为后面项目的编写做铺垫,本篇文章就是介绍了数据存储的相关知识。这还是一个比较粗糙的FMDB的实用说明,浅层的学习也足够知乎日报项目的实用,后续的相关学习就等知乎日报完成之后在。再进行系统规划吧。

2024-11-18 00:25:55 906 1

原创 「OC」知乎日报第一周

本周开始了知乎日报项目的编写,在前面对YYMdoel,Masnory,AFN等第三方库的学习,近期终于开始了组内必写的项目——知乎日报,这个项目使用刚刚学习到的MVVC。

2024-11-10 21:55:32 476

原创 「OC」SDWebimage的学习

这是SD库之中的框架之中的内容和直接为表层的 UIKit框架提供接口负责处理和协调和, 并与 UIKit层进行交互。真正执行下载请求;最底层的两个类为高层抽象提供支持。

2024-11-10 21:50:14 561

原创 「OC」AFNetworking的简单使用

我们先来对AFNetworking的核心组件进行介绍:基于的管理类,用于发送网络请求和处理响应。是最常用的类,用于处理 HTTP 请求。:基于,用于管理下载、上传等任务。:用于监控网络状态的变化。

2024-10-20 20:33:48 1052

原创 「OC」YYModel的使用方式

在我们进行网络请求的过程之中,获取到的JSON数据一般都会被我们封装为一个Model类,而一般来说一个model类之中会有很多个属性,这时候我们在model类进行初始化的时候就会麻烦,我们需要将申请的JSON数据一个一个的赋值给这个Model,非常浪费时间。为了避免如此繁琐的操作,于是我对YYModel进行了相关的学习。

2024-10-20 18:24:00 473

原创 「OC」GCD的简单运用

前一篇博客初次接触了线程这些内容,了解了NSThread的相关内容,今天我们继续学习线程之中GCD的学习Grand Central Dispatch(GCD) 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务。在 Mac OS X 10.6 雪豹中首次推出,也可在 iOS 4 及以上版本使用。GCD是一个替代诸如NSThread等技术的很高效和强大的技术。

2024-10-10 11:52:37 1022

原创 「OC」NSArray的底层逻辑和遍历方法

一些关于NSArray的底层实现以及遍历原理的探究

2024-10-10 11:31:10 1407

原创 「OC」多线程的学习——NSThread

我们可以看出,当线程A访问数据并对数据进行操作的时候,数据被加上一把锁,这个时候其他线程都无法访问数据,知道线程A结束返回数据,线程B此时在访问数据并修改,就不会造成数据错乱了。通过上图我们发现,当线程A访问数据并对数据进行操作的同时,线程B访问的数据还是没有更新的数据,线程B同样对数据进行操作,当两个线程结束返回时,就会发生数据错乱的问题。iOS多线程有四种方法:pthread,NSThread,GCD, NSOperation,今天我们主要介绍NSThread的用法,剩下的三种会另外进行介绍。

2024-09-29 21:07:28 1454

原创 「OC」探索 KVC 的基础与应用

在我们前面总结了五大传值方法,其中在KVO之中,我们是用的方法实现对对象的属性进行监听的,其中我们想要对属性监听需要我们用到一个KeyPath的参数,去找到监听对象之中与KeyPath名字相同的对应属性。KVC和KVO有些相似,KVC需要使用键值对去直接访问对应的属性KVC(Key-value coding)键值编码,指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值而不需要调用明确的存取方法。我们可以不使用的方法间接访问对象当中的属性。

2024-09-29 21:03:13 782

原创 「OC」frame和bounds的区别

在我们平时在使用OC编程的时候,最近常使用frame和bounds来布局控件的位置和大小,但是学了这么久还不太懂这两者的区别,于是我就进行了以下学习在UIView之中frame和bounds之间的具体区别。frameframe的位置是以父视图的坐标系为参照,从而确定当前视图在父视图中的位置。frame的大小改变时,当前视图的左上角位置不会发生改变,只是大小发生改变。boundsbounds改变位置时,改变的是子视图的坐标系位置,自身没有影响;其实就是改变了本身的坐标系原点,默认本身坐标系的原点是左上角。

2024-09-20 16:45:22 1084

原创 「OC」present和push操作区别以及混合推出的实现

在viewController的生命周期之中,我们探究了present以及push不同操作之中,生命周期的方法调用,以及在暑假的时候学习了如何实现自定义模态视图和自定义模态视图动画。因此我继续探究present以及push操作的相关区别,以及学习如何实现视图的混合推出。本文总结了present和push的相关区别以及如何去实现push和present如何在有需求是实现混合转场的操作。

2024-09-20 16:43:00 1071

原创 「OC」事件点击demo合集

简单总结一下学习事件点击知识写的一些demo

2024-09-11 20:49:39 906

原创 「OC」ViewController的生命周期

之前学习了MVC的简单入门,我们知道了C指的就是ViewController,那我们就借此机会探究一下ViewController的生命周期相关内容。在iOS开发中,ViewController的生命周期函数扮演着至关重要的角色,控制着视图控制器的加载、显示和消失过程。通过深入理解这些生命周期函数,我们可以更好地管理和控制视图控制器的行为,在需要的地方添加相关逻辑进行操作。

2024-09-11 20:48:37 1158

原创 「OC」剪不断,理还乱——UIResponder、UIGestureRecognizer、UIControl的响应优先级探究

上一篇我们记录了编译器是如何找到最佳响应者以及响应者链的构成「OC」初识iOS事件处理流程,那么今天我们就来探究,UIResponder、UIGestureRecognizer、UIControl在处理事件时的优先级,以及相关的细节。让我们开始UIResponder、UIGestureRecognizer、UIControl的爱恨情仇吧先简单介绍一下本文的三个主角。

2024-09-04 21:54:24 1781 1

原创 「OC」iOS事件处理流程

以上就是对触摸事件以及响应者链的学习内容,接下来还有UIResponder、UIGestureRecognizer、UIControl这个几个触发响应的优先级,以及响应事件内部的深入探究,由于篇幅我们便将剩下的内容留到下一篇博客吧。

2024-09-04 21:52:32 1527 1

原创 「OC」初识MVC —— 简单学习UITableView的解耦

最近在学习了解MVC,然后开始发现,原来之前自己写的内容,真的拿不上一点台面,真是叫人头大啊。好吧😭,知耻而后勇,只能继续好好学习了。由于是刚刚接触MVC,很多内容都是根据网上内容进行相关学习,因为没有基础的概念认知,如果有错误敬请斧正。关于tableView的解耦自我感觉还是一知半解,关于MVC和解耦的思想还是不太理解,对于在解耦的tableView之中使用自定义cell的部分还有一定的不理解,但是还是汇总为了博客记录一下学习的内容,后面还有根据网络申请进行分装,那就在后面学到了相关内容再进行深入学习。

2024-08-30 22:22:47 2021

原创 「OC」CAlayer——巧用动画实现一个丝滑的折叠cell

在这个暑假集训后的时间,都在家里做着学习笔记的整理,深入学习了CALayer的相关知识,掌握了第三方库Masonry自动布局的用法,以及学习了MVC的相关内容,正好组内新学期的第一个任务就是写一个折叠cell的小demo,所以就打算将暑假学习过的内容,尽量整合在一块,进行巩固复习。

2024-08-30 22:21:50 849

原创 「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现

上次我们学习了CALayer的相关知识,但好像忘记了我一开始学习CALayer是为了实现cell之中的圆角cell,那么了解完相关的前置知识。

2024-08-21 20:26:01 1050

原创 「OC」视图控制器的懒加载策略

一般来说,对于需要直接加载在页面上的内容,我们不使用懒加载,直接进行普通加载即可,而那些不出现在首页需要点击才弹出的页面,才使用懒加载,可以有效缩短加载的时间。在重写getter方法的过程之中,我们只能用直接访问属性的方法进行方法(即_加上属性名),如果使用间接访问属性的方法,使用getter方法很可能引起循环引用。我们可以看到,控制器的背景反而变成了橙色,说明当我们创建了控制器,控制器并不会马上加载,而是我们将控制器作为。的赋值程序是先运行的,那么关于背景颜色的赋值和我们之前的猜想不同的。

2024-08-21 20:23:08 831

原创 「OC」NSPredicate —— 使用谓词过滤元素

在暑假的3Gshared和学生管理系统之中,无论是登陆注册界面还是学生信息的输入,都存在需要我们对输入内容进行限制,于是我们就需要找到一个方法来解决对输入内容的判断限制,就是NSPredicate——谓词来过滤输入的元素。由于在暑假的几个任务之中只是知道如何使用,并没有仔细了解,乘着暑假剩下的空闲时间进行学习总结。类是用来定义逻辑条件约束的获取或内存中的过滤搜索,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。

2024-08-17 19:58:30 1061

原创 「OC」探索CALayer:基础知识与实用技巧简要介绍

在顺利完成暑假之中的任务之后,终于可以学习一点之前一直没有时间学习的内容啦。上一片文章写到「iOS」自定义Modal转场——抽屉视图的实现,我们已经成功的实现了抽屉视图,接下来是要实现cell之中的圆角。我看到要想实现这个圆角cell,需要OC之中的图形绘制CALayer的内容,于是我继续对CALayer进行学习,如果篇幅过长那么会将圆角cell的实现放到后面来。@end@end通过运行代码,我们可以获得以下CALayer。

2024-08-17 19:55:26 1192

空空如也

空空如也

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

TA关注的人

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