🔗 LeetCode 3 - Longest Substring Without Repeating Characters
📌 题目描述给定一个字符串 s,请你找出其中不含有重复字符的最长子串的长度。
示例:
123输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
💡 解题思路使...
AFNetworking 是基于 Apple 提供的 NSURLSession 和 NSURLConnection 封装的网络库(AFNetworking 3.0 以后完全基于 NSURLSession),它对网络请求、JSON/XML 解析、文件上传下载、网络监测等功能做了封装,使 iOS 开发者能够更方便地处理网络通信。
一、AFNetworking 架构总览AFNetwork...
包体积的影响包体积优化的必要性
下载转化率下降:每增加6M,应用下载转化率下降1%。
App Store限制:超过200MB的包,iOS 13以下用户无法通过蜂窝数据下载,iOS 13及以上用户需手动设置。
磁盘占用:大包体积占用更多存储空间,影响低存储用户。
用户下载意愿:大包体积减少用户下载意愿,尤其在蜂窝数据低数据模式下。
性能影响:包体积大增加启动时间和SIGKILL风险,降低基础体...
🔗 LeetCode 142 - 环形链表 II
📌 题目描述给定一个链表的头节点 head,返回链表开始入环的第一个节点。如果链表无环,则返回 null。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。
示例:
123输入:h...
一、NSURLSession 下载机制原理类型回顾:
NSURLSessionDataTask: 用于请求和响应小数据。
NSURLSessionDownloadTask: 用于下载大文件,支持断点续传。
NSURLSessionUploadTask: 用于上传数据。
对于断点续传,NSURLSessionDownloadTask 是唯一支持此功能的类型。
二、断点续传机制详解1. 如何...
性能分析-工具开源工具
FLEX (Flipboard Explorer) 是一个非常受欢迎的开源 iOS 内部工具,提供了强大的 UI,允许开发者在运行时检查应用的视图层次结构、网络请求、数据库、用户偏好设置等。适合开发者在应用内实时调试和检查性能问题。
XCTest XCTest 是 Apple 官方的单元测试框架,支持性能测试。开发者可以通过 measure 方法来衡量代码块的执行时间...
🔗 LeetCode 283 - Move Zeroes
📌 题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序不变。
示例:
12输入: [0,1,0,3,12]输出: [1,3,12,0,0]
💡 解题思路
用一个指针 lastNonZeroIndex 来记录下一个应该放非零元素的位置;
遍历一遍数组,遇到非零就放到该位置;
遍...
一、核心概念1. RunLoop
RunLoop 是线程的事件处理循环,是 NSRunLoop 和 CFRunLoopRef 的封装。
默认只在主线程自动启动。
管理事件源(Timer、Input Source、Observer)。
保持线程活跃、延迟执行任务、监听输入等都依赖 RunLoop。
2. 多线程
iOS 支持多线程方式有:
NSThread
GCD(主流)
NSOperati...
🔗 LeetCode 160 - Intersection of Two Linked Lists
📌 题目描述给你两个单链表的头节点 headA 和 headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。
示例:
1234567A: a1 → a2↘c1 → c2 → c3↗B: b1 → b2 → b3输出:c1
💡 解题思...
一、iOS内存泄漏排查1. 常见内存泄漏场景
循环引用:对象之间相互强引用(如父子对象、Block捕获self未使用weak修饰),导致无法释放516。
未释放Core Foundation对象:使用CF框架(如CFArrayRef、CGImageRef)时未调用CFRelease17。
NSTimer/CADisplayLink强引用:未在适当时机调用invalidate,导致持...