- 博客(20)
- 资源 (1)
- 收藏
- 关注

原创 深度对比:Objective-C与Swift的RunTime机制与底层原理
底层原理:RunTime 会根据方法签名创建一个 NSInvocation 对象,封装原始的消息调用。然后调用 -forwardInvocation:,你可以在这里自定义如何处理这个消息,比如转发给其他对象、修改参数、记录日志等。如果你没有处理,调用 [super forwardInvocation:],最终会抛出异常。} else {RunTime(运行时)是iOS开发的核心机制,主要指程序在运行过程中动态管理类型、对象、方法等的能力。
2025-04-28 21:12:57
1624

原创 Swift与iOS内存管理机制深度剖析
内存管理是每一位 iOS 开发者都绕不开的话题。虽然 Swift 的 ARC(自动引用计数)极大简化了开发者的工作,但只有深入理解其底层实现,才能写出高效、健壮的代码,避免各种隐蔽的内存问题。本文将从底层原理出发,系统梳理 Swift 与 iOS 的内存管理机制,结合实战经验,分享常见问题与优化建议。
2025-04-26 18:10:54
1318

原创 Swift闭包(Closure)深入解析与底层原理
闭包是自包含的函数代码块,可以在代码中被传递和使用。它不仅可以像函数一样执行代码,还能捕获和存储定义时上下文中的常量和变量。Swift中的闭包类似于其他语言中的lambda或匿名函数。// 基础闭包语法闭包本质:闭包是一个包含执行代码和上下文环境的特殊函数类型。内存结构:闭包由函数指针、上下文对象和元数据信息三部分组成。捕获机制:支持值捕获和引用捕获,可通过strong、weak、unowned控制引用方式。内存管理:非逃逸闭包在栈上分配,逃逸闭包在堆上分配。
2025-04-25 18:55:20
1148
原创 深入浅出iOS性能优化:打造极致用户体验的实战指南
在当今移动应用竞争激烈的时代,性能优化已经成为iOS开发中不可或缺的重要环节。一个性能优秀的应用不仅能给用户带来流畅的使用体验,还能减少设备资源消耗,延长电池寿命,提高用户留存率。本文将深入探讨iOS性能优化的各个方面,从内存管理到UI渲染,从网络请求到启动优化,全方位帮助开发者打造高性能的iOS应用。本文重点说明内存管理优化(内存泄漏、内存碎片化等)UI渲染优化(离屏渲染、图层优化等)网络请求优化(缓存策略、请求合并等)启动优化(异步初始化、资源预加载等)
2025-05-06 17:12:11
730
原创 NSOperation深入解析:从使用到底层原理
NSOperation是Apple提供的一个面向对象的并发编程API,它基于GCD(Grand Central Dispatch)构建,但提供了更高层次的抽象和更丰富的功能。NSOperation允许开发者以面向对象的方式管理并发任务,提供了任务依赖、取消、暂停等高级特性。这种设计使得并发编程变得更加可控和可维护,特别适合处理复杂的异步任务场景。状态管理NSOperation通过状态机管理Operation的生命周期,使用KVO机制通知状态变化,并通过锁机制确保状态转换的原子性和线程安全。线程管理。
2025-05-05 23:58:40
826
原创 iOS启动优化:从原理到实践
由三个主要部分组成:Header(文件头) Load Commands(加载命令)Data(数据段)iOS启动优化是一个系统工程,需要从多个维度进行考虑和优化。通过理解启动流程、合理使用优化技巧,并持续监控性能,我们可以显著提升应用的启动速度,为用户提供更好的使用体验。
2025-05-03 21:18:38
1393
原创 GCD 深入解析:从使用到底层实现
Grand Central Dispatch (GCD) 是 Apple 提供的一套强大的并发编程框架,它通过精心设计的分层架构和核心组件,为开发者提供了简单易用的并发编程接口。GCD 的核心优势在于其高效的队列管理、智能的线程池调度、灵活的任务依赖处理以及完善的内存管理机制。在实际应用中,开发者需要根据具体场景选择合适的队列类型:主队列用于 UI 更新,全局队列用于后台任务,自定义队列用于特定业务场景。
2025-05-03 18:27:35
1104
原创 iOS RunLoop 深入解析
RunLoop 是 iOS 系统中用于处理事件和消息的循环机制。它负责管理线程的事件处理、消息传递和任务调度,是 iOS 应用能够持续运行并响应用户交互的基础。保持程序持续运行处理各种事件(触摸事件、定时器事件、网络事件等)节省 CPU 资源,提高程序性能协调线程间的通信RunLoop 是 iOS 系统中处理事件和消息的核心机制,它通过循环处理来保持程序持续运行并响应各种事件。每个线程都有且只有一个对应的 RunLoop,主线程的 RunLoop 默认开启,而子线程需要手动开启。
2025-04-30 21:14:11
1359
2
原创 Objective-C Block 底层原理深度解析
Block 是 Objective-C 中的特殊对象,通过 isa 指针继承自 NSObject,实现了匿名函数的功能。它有三种类型:全局 Block(不捕获变量,存储在数据区)、栈 Block(捕获变量,存储在栈上)和堆 Block(由栈 Block 复制而来,存储在堆上)。Block 可以捕获变量,对于基本类型采用值复制,使用__block修饰符可以修改捕获的变量,对象类型默认是强引用。在内存管理方面,Block 遵循 Objective-C 的内存管理规则,需要注意循环引用问题,可以通过__weak。
2025-04-29 18:18:54
2183
原创 Swift中Class和Struct的深度对比分析
在iOS开发中,Class和Struct的选择直接影响着代码的性能、安全性和可维护性。本文将深入剖析它们的本质区别,帮助你在实际开发中做出更好的选择。理解Class和Struct的深层区别,不仅仅是语法层面,更重要的是内存模型、性能特征和线程安全性的差异。在实际开发中,需要根据具体场景权衡选择,才能写出更高质量的Swift代码。
2025-04-25 09:15:18
675
原创 Go语言实战:快速搭建完整的用户认证系统
在本文中,我将介绍如何使用 Go 语言搭建一个包含用户注册、登录、登出功能的完整认证系统。该系统使用 SQLite 作为数据库,JWT 作为身份验证token,并实现了优雅关闭等特性。这个认证系统虽然简单,但包含了一个完整认证系统所需的基本功能。它可以作为更大项目的起点,根据需求进行扩展。添加邮箱验证实现密码重置添加角色权限增加社交媒体登录添加双因素认证。
2025-04-24 18:44:32
921
原创 Swift:什么是Optional?其背后的机制是什么?什么是Unconditional Unwrapping?
优先使用安全的解包方式(if let, guard let)避免使用强制解包(!合理使用可选链和nil合并运算符在性能关键的地方考虑Optional的开销。
2025-04-24 18:14:16
471
原创 iOS/swift音频播放(三)— AudioFileStream
iOS/swift音频播放(三)— AudioFileStreamAudioFileStream初始化AudioFileStream数据解析AudioFileStreamParseBytes解析文件格式信息AudioFileStream_PropertyListenerProc根据获PropertyID读取音频格式信息AudioFileStreamGetPropertyInfoAudioFileStreamGetProperty计算时长Duration分离音频帧AudioFileStream_Packets
2020-09-23 17:42:54
1394
原创 iOS/swift音频播放(二)— AudioFile
iOS/swift音频播放(二)— AudioFileAudioFile初始化AudioFile1. AudioFileOpenURLAudioFileAudiFile这个类是用来做什么的呢?首先我们看一下苹果官方介绍,如下图所示:根据官方文档,可以得知这个类可以用来创建、初始化音频文件;读写音频数据,对音频进行优化;读取和写入音频信息。所以我们可以使用它来支持音频播放 以及生成音频文件。初始化AudioFile1. AudioFileOpenURLpublic func AudioFil
2020-09-22 16:59:27
1144
原创 iOS/swift音频播放(一)
iOS/swift音频播放音频基础知识音频文件PCMMP3 文件结构音频播放流程(MP3)苹果官方对上述的流程进行了封装并提供了不同层次的接口Low-Level ServicesMid-Level ServicesHigh-Level Services实现一个音频播放器注:文章中代码将以swift形式展示例子音频基础知识音频文件PCMPCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。P
2020-07-16 17:04:23
2799
1
原创 CocoaPods安装和使用教程以及RVM、RuBy的安装配置
CocoaPods是一个负责管理iOS项目中第三方开源库的工具。它可以方便我们进行第三方的管理首先 安装 RVM打开终端 $ curl -L https://get.rvm.io | bash -s stable期间可能会问你sudo管理员密码,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。然后,载入 RVM 环境
2016-04-11 14:32:46
4965
1
原创 关于使用友盟QQ微信第三方登陆
最近再次写到第三方登陆,与iOS9以前有了很大的区别了。也遇到了一些小问题,但也成功地解决了。首先你要有友盟的账号(友盟官网) 以及微信开放平台(点击链接)和腾讯开放平台(点击链接) 微信开放平台申请获取到微信AppID及AppSecret,如果需要微信登录功能,需要申请微信登录权限QQ及Qzone使用同一个AppID及Appke,选择移动应用,填写相关应用信息并
2016-01-13 14:02:47
2696
原创 MapKit/CoreLocation使用(一)
在现在,很多app开发都会用到导航(去任意地方)、查找周边(找餐厅、银行、电影院等)所以会用到两个框架进行开发:Map Kit 用于地图展示Core Location 用于地理定位 先介绍两个热门的专业术语LBS Location Based Service 基于定位的服务SoLoMo Social Local Mobile(索罗门)移动互联网和电商要搞的东西
2015-10-10 20:19:54
516
转载 iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。 下载:https://github.com/mwaterfall/MWPhotoBrowser 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code
2015-09-05 21:19:08
4520
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人