- 博客(53)
- 收藏
- 关注
原创 【iOS】weak修饰符
本文探究了OC中weak修饰符的底层实现原理。通过分析发现,weak引用通过sideTable的弱引用表机制实现自动置nil功能。当对象被释放时,runtime会遍历弱引用表,将所有指向该对象的weak指针设为nil。storeWeak函数负责管理weak引用的注册和更新,涉及旧值清理和新值注册两个关键步骤。这种设计既保证了内存安全,又避免了野指针问题,同时通过sideTable的分离存储优化了内存使用效率。
2025-07-30 19:56:10
460
原创 【iOS】SideTable
摘要: Side Table是iOS/macOS内存管理中的核心辅助结构,用于扩展对象元数据存储(如引用计数、弱引用指针等)。它通过全局哈希表集中管理元数据,减少内存碎片。对象的isa指针通过位域标记是否需要Side Table,并关联对应条目。Side Table包含自旋锁(保证线程安全)、引用计数映射表(RefcountMap)和弱引用表(weak_table),其生命周期由运行时自动管理,禁止手动释放。这种设计优化了ARC的弱引用处理能力,是Objective-C运行时高效内存管理的关键组件。
2025-07-22 15:47:29
860
原创 【iOS】锁[特殊字符]
本文主要探讨iOS开发中锁的概念、分类及常用实现。首先介绍了锁的基本概念,指出锁是多线程编程中协调共享资源访问的机制,具有互斥性和原子性特点。文章将锁分为7大类,并重点分析了Objective-C中两种主要锁类型:互斥锁和自旋锁。
2025-07-21 21:41:54
827
原创 【iOS】编译和链接、动静态库及dyld的简单学习
编译与链接是代码构建的两个核心阶段:编译将源代码转换为目标文件,解决语法和语义问题;链接则将多个目标文件合并为可执行程序,处理依赖关系。动态库与静态库的主要区别在于代码合并方式——静态库直接嵌入可执行文件,而动态库在运行时加载,前者增加体积但独立性强,后者节省内存但依赖环境。DYLD作为动态链接器,负责加载依赖库、解析符号地址并完成程序链接,是程序运行的关键环节。
2025-07-19 17:34:14
866
原创 【iOS】消息传递和消息转发
摘要: Objective-C的消息传递机制基于objc_msgSend函数,通过三步查找方法实现。若未找到,触发消息转发的三级补救。
2025-07-18 21:24:33
1082
原创 【iOS】MRC与ARC
摘要:Objective-C内存管理机制 Objective-C提供了MRC(手动引用计数)和ARC(自动引用计数)两种内存管理机制。MRC需要开发者手动管理对象生命周期,通过retain/release控制引用计数,易引发内存泄漏和悬挂指针问题。ARC则通过编译器自动插入内存管理代码,简化了开发流程。
2025-07-18 16:13:08
969
原创 【iOS】继承链
Objective-C通过继承链实现方法查找和消息转发,几乎所有类最终继承自NSObject(少数如NSProxy作为独立根类)。
2025-07-16 12:19:08
1016
原创 【iOS】源码阅读(六)——方法交换
方法交换(Method-Swizzling)是Objective-C运行时提供的动态修改方法实现的机制,通过交换两个方法的IMP(方法实现)来实现功能注入或修改。它常用于AOP编程、调试和日志统计等场景。
2025-07-16 09:17:17
986
原创 【iOS】源码阅读(五)——类&类的结构分析
本文深入分析了Objective-C类的底层结构及其机制。通过clang重写代码发现,OC类本质是objc_class结构体,继承自objc_object。objc_object包含isa指针,实现对象与类的关联;objc_class则存储方法、属性等元数据。类、元类和根元类通过isa指针形成闭环继承链,方法查找遵循实例→类→父类的路径。NSObject作为根类封装了底层结构,使开发者无需直接操作objc_class。理解这些机制对OC开发、调试和性能优化至关重要。
2025-05-28 20:26:50
1075
1
原创 【iOS】源码阅读(四)——isa与类关联的原理
本文主要探讨了Objective-C对象的本质及其与isa指针的关联关系。通过使用Clang编译器将Objective-C代码转换为C++代码,作者深入分析了对象的底层实现。文章指出,Objective-C对象在底层实际上是结构体,并且通过isa指针与类关联。
2025-05-15 22:35:30
1055
2
原创 【iOS】源码阅读(二)——NSObject的alloc源码
前面笔者已经学习了alloc相关源码,之前的alloc底层源码实现步骤是以GGObject为基础的,今天我们来探索一下NSObject中的alloc源码。
2025-05-06 20:40:30
1336
2
原创 【iOS】OC源码阅读——alloc源码分析
之前笔者简单学习了Objective-c,这段时间在阅读OC源码,通过阅读obj838来深入理解代码的运行机制、设计思想及实现细节。本篇博客主要分享一下我通过阅读和调试alloc部分的源码所学到的东西和遇到的问题。
2025-04-28 21:27:34
1311
5
原创 【C++】构造函数与析构函数浅知
在调试阅读OC中alloc方法的源码时,笔者了解到构造函数与析构函数的作用,特单独写出来这篇文章,只是浅浅认识一下,等学习C++的时候还需深入了解。
2025-04-26 19:51:01
538
原创 【OC】AVPlayerLayer的学习
在编写类视频软件项目时,涉及到视频播放的问题,我们需要给已有的或者用网络申请拉下来的视频一个承载器,来更好的在客户端展示和播放视频。这里就要用到AVPlayer和APlayerLayer,本篇博客会简单介绍一下AVPlayer和APlayerLayer的用法以及两者之间的关系,最后会有一个具体应用的小demo。
2025-04-20 20:45:07
1073
原创 【iOS】关于自动引用计数的认识
在使用xcode编写程序的过程中,我们经常接触到自动释放池,自动释放池采用了自动引用计数(Automatic Reference Counting,简称 ARC),ARC作为iOS 5引入的一项特性,大大简化了内存管理,并减少了内存泄漏的可能性。本篇博客就让我们一起来简单了解一下这项技术。
2025-03-03 21:36:32
1088
原创 【iOS】OC语法知识小结
在之前写项目和代码的时候,遇到许多布局的实现问题,学习后并没有写成笔记,而是放在备忘录里,这篇博客是对暑假到大二上学期以来有些遗漏的OC语法问题的归纳。
2024-12-15 20:17:34
1370
2
原创 【iOS】UITextView
在知乎日报项目的仿写过程中,需要实现一个评论区的长评论折叠,UITextView是 iOS 开发中一个功能强大且常用的用户界面组件,用于展示和编辑多行文本内容
2024-12-09 18:47:03
1746
4
原创 【iOS】《Effective Objective-C 2.0》阅读笔记(一)
最近开始阅读一些iOS开发的相关书籍,第一本就是《Effective Objective-C 2.0》,这里对第一周的阅读内容进行简单归纳和总结,主要是熟悉OC语言。从本周开始,笔者开始阅读Effective Objective-C 2.0,本周了解到OC的起源和部分代码编写时的优化,发现自己之前代码有很多不足,后续还会继续阅读这本书。
2024-12-01 22:14:54
4510
2
原创 【iOS】知乎日报总结
在系统学习了OC语言和UI控件后,知乎日报是第一个比较大的项目,耗时一个多月时间,里面使用到了YYModel、Masonry、AFNetworking、FMDB等多个第三方库。
2024-11-28 22:18:10
1101
原创 【iOS】iOS的轻量级数据库——FMDB
在完成知乎日报仿写项目时,在文章详情页进行点赞和收藏,在个人账号页面的收藏里需要展现出来,这里使用到了第三方库FMDB,这里是笔者对FMDB库的简单学习。
2024-11-17 21:40:41
1458
原创 【iOS】SDWebImage
在写知乎日报项目时,遇到了图片加载和通过API异步加载图片的问题,在组内成员的引导下,去学习了SDWebImage开源库。
2024-10-30 20:24:07
1198
3
原创 【iOS】使用AFNetworking进行网络请求
在暑假写天气预报项目时,我们已经接触到网络请求,当时我们是使用URLSession类,即Foundation框架中用于管理和配置网络连接的API,来完成对实时天气预报数据的请求,现在我们来学习一种更方便的网络请求方式——使用一个单例通过AFNetworking来实现网络请求。
2024-10-27 18:46:31
1583
原创 【iOS】UICollectionView的使用方法
UICollectionView 是一个强大的 UIKit 组件,用于展示数据集合,比如图片、文字列表等。它支持复杂的布局,包括网格、瀑布流等。以下是我个人在学习UICollectionView时的笔记。
2024-10-20 17:43:55
1965
原创 【iOS】UIViewController的生命周期
本篇博客主要是关于UIViewController的生命周期。在iOS开发中UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般复杂的项目都离不开UIViewController作为基类。所以了解UIViewController的整个生命周期是有必要的。理解并正确实现这些生命周期方法是开发 iOS 应用的关键部分。
2024-10-07 20:14:35
1364
1
原创 【iOS】push和pop、present和dismiss
push 和 present 是两种用于导航和切换视图控制器(ViewController)的常用方法,push与present都可以推出新的界面,present与dismiss对应,push和pop对应。present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc或这其他vc。
2024-09-17 18:35:30
1599
原创 【iOS】单例模式
在进行大项目编写之前,开始对前面比较重要的知识进行回顾和重新学习,单例模式在软件开发设计中是比较重要的,尤其是它的初始化,笔者重新学习了单例模式并作该笔记。
2024-09-11 21:53:24
1516
原创 【iOS】Masnory的简单学习
在暑假的项目编写过程中,大量使用到了视图布局,笔者用的较多的是Frame Layout(框架布局),该布局方法需要自己计算每个视图的位置,且稍有不注意就会出现视图重叠,导致实际和预期相差较大,使用过程中感觉到了诸多不便,于是有了这篇关于Masonry的基本使用方法的学习。Masonry 是一个 Objective-C 的布局框架,用于在 iOS 和 macOS 应用中创建用户界面。它提供了一个链式编程的 API,使得编写自动布局约束变得简单和直观。
2024-09-08 12:56:48
1471
原创 【iOS】iOS中简单的网络请求
在完成暑假最后一个项目——仿写苹果原生APP天气预报时,需要进行网络请求,且网络请求在iOS开发中是比较重要的知识点,特学习并记录。
2024-08-26 20:18:10
2028
原创 【iOS】正则表达式
正则表达式(Regular Expression,简称regex或regexp)是一种强大的文本处理工具,用于匹配、搜索和替换符合特定模式的字符串。它在编程中广泛应用,用于执行各种字符串搜索、替换、验证和分割等操作。在Objective-C中,使用正则表达式主要涉及到类和NSString类的一些方法。
2024-08-08 10:05:38
1167
原创 【iOS】暑假第二周——网易云APP 仿写
有了之前仿写ZARA的基础,本周我们仿写了网易云APP,在这里对多界面传值进行了首次应用——夜间模式和换头像功能。以下是我在仿写网易云时觉得比较重要的地方和遇到的问题。
2024-08-04 23:08:35
1284
原创 【iOS】多界面传值
在iOS开发中,多界面传值是一个常见的问题。多界面传值的方法有很多,本篇博客主要介绍属性传值, 代理传值(即协议传值),单例传值,通知传值。
2024-07-31 21:07:09
1266
原创 【iOS】暑期第一周——ZARA app仿写
暑假学习的第一周任务是对ZARA app进行仿写,充分运用之前学习的Objective-C语言和UI控件。我在编写demo的过程中遇到了一些问题,特写该博客作为学习笔记。
2024-07-28 22:26:09
1310
原创 【iOS】UI学习——cell的复用及自定义cell
本篇博客主要介绍了UI学习中cell的复用和自定义cell的相关内容,欢迎学习和指正!
2024-06-16 21:11:22
2361
5
原创 【iOS】UI——关于UIAlertController类(警告对话框)
在UI学习中,我们发现UIAlertView在iOS 9中已经被废弃,我们找到UIAlertController来代替UIAlertView实现弹出框的功能,从而有了这篇关于UIAlertController的学习笔记。
2024-06-04 23:15:16
1918
1
原创 【iOS】UI学习(一)
本篇博客主要介绍了iOS中UI学习的部分知识,即UILabel、UIButton、UiView、UIWindow的相关内容,大部分注释都放在了代码中,这篇博客既是我自己的学习笔记,又希望可以帮到你~
2024-05-30 18:48:28
2099
3
原创 【Mac】关于Mac的github配置和本地项目上传
本文主要介绍了Mac的git环境配置,github仓库的创建,本地文件上传到github仓库以及常用的git命令的相关内容,希望对你有所帮助~
2024-05-29 20:24:13
3294
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人