• Day16-无重复字符的最长子串

    🔗 LeetCode 3 - Longest Substring Without Repeating Characters 📌 题目描述给定一个字符串 s,请你找出其中不含有重复字符的最长子串的长度。 示例: 123输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 💡 解题思路使...
  • Day16-AFNetworking底层原理

    AFNetworking 是基于 Apple 提供的 NSURLSession 和 NSURLConnection 封装的网络库(AFNetworking 3.0 以后完全基于 NSURLSession),它对网络请求、JSON/XML 解析、文件上传下载、网络监测等功能做了封装,使 iOS 开发者能够更方便地处理网络通信。 一、AFNetworking 架构总览AFNetwork...
  • 包体积

    包体积的影响包体积优化的必要性 下载转化率下降:每增加6M,应用下载转化率下降1%。 App Store限制:超过200MB的包,iOS 13以下用户无法通过蜂窝数据下载,iOS 13及以上用户需手动设置。 磁盘占用:大包体积占用更多存储空间,影响低存储用户。 用户下载意愿:大包体积减少用户下载意愿,尤其在蜂窝数据低数据模式下。 性能影响:包体积大增加启动时间和SIGKILL风险,降低基础体...
  • Day15-环形链表 II

    🔗 LeetCode 142 - 环形链表 II 📌 题目描述给定一个链表的头节点 head,返回链表开始入环的第一个节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。 示例: 123输入:h...
  • Day15-NSURLSession 断点续传 + 网络封装

    一、NSURLSession 下载机制原理类型回顾: NSURLSessionDataTask: 用于请求和响应小数据。 NSURLSessionDownloadTask: 用于下载大文件,支持断点续传。 NSURLSessionUploadTask: 用于上传数据。 对于断点续传,NSURLSessionDownloadTask 是唯一支持此功能的类型。 二、断点续传机制详解1. 如何...
  • 性能分析

    性能分析-工具开源工具 FLEX (Flipboard Explorer) 是一个非常受欢迎的开源 iOS 内部工具,提供了强大的 UI,允许开发者在运行时检查应用的视图层次结构、网络请求、数据库、用户偏好设置等。适合开发者在应用内实时调试和检查性能问题。 XCTest XCTest 是 Apple 官方的单元测试框架,支持性能测试。开发者可以通过 measure 方法来衡量代码块的执行时间...
  • Day14-移动零

    🔗 LeetCode 283 - Move Zeroes 📌 题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序不变。 示例: 12输入: [0,1,0,3,12]输出: [1,3,12,0,0] 💡 解题思路 用一个指针 lastNonZeroIndex 来记录下一个应该放非零元素的位置; 遍历一遍数组,遇到非零就放到该位置; 遍...
  • Day14-RunLoop&多线程&内存管理

    一、核心概念1. RunLoop RunLoop 是线程的事件处理循环,是 NSRunLoop 和 CFRunLoopRef 的封装。 默认只在主线程自动启动。 管理事件源(Timer、Input Source、Observer)。 保持线程活跃、延迟执行任务、监听输入等都依赖 RunLoop。 2. 多线程 iOS 支持多线程方式有: NSThread GCD(主流) NSOperati...
  • Day13-相交链表

    🔗 LeetCode 160 - Intersection of Two Linked Lists 📌 题目描述给你两个单链表的头节点 headA 和 headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。 示例: 1234567A: a1 → a2↘c1 → c2 → c3↗B: b1 → b2 → b3输出:c1 💡 解题思...
  • Day13-内存泄漏排查、僵尸对象与 MRC 回顾

    一、iOS内存泄漏排查1. 常见内存泄漏场景 循环引用:对象之间相互强引用(如父子对象、Block捕获self未使用weak修饰),导致无法释放516。 未释放Core Foundation对象:使用CF框架(如CFArrayRef、CGImageRef)时未调用CFRelease17。 NSTimer/CADisplayLink强引用:未在适当时机调用invalidate,导致持...
12346