🔗 LeetCode 26 - Remove Duplicates from Sorted Array
📌 题目描述给你一个 升序排列 的数组 nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 O(1) 额外空间的条件下原地修改输入数组。
示例:
12输入: nums = [1,1,2]输出: 2, nums = [1,...
一、定义Runtime 是什么?
Objective-C 的 Runtime 实际上是 C 语言的一套函数和类库,用于支持 Objective-C 编程语言的动态性,包括类的创建、方法调用、属性访问等。
二、Runtime 实战技巧1.Method Swizzling(方法交换)1. 什么是 Method Swizzling?
定义:在程序运行时,交换两个方法实现的过程。
本质:修改方...
🔗 LeetCode 167 - Two Sum II - Input Array Is Sorted
📌 题目描述给定一个已按升序排列的整数数组 numbers 和一个目标值 target,请你在数组中找出两个数,使得它们的和为目标值 target,并返回这两个数的下标。
注意:
返回的答案是一个 1 索引的数组。
假设每个输入只对应一个答案,且你不可以重复使用数组中的元素。
...
Objective-C Runtime 基础结构Objective-C 运行时系统(Runtime)是 Objective-C 语言的核心部分,它在程序运行期间负责管理类、对象、方法调用等行为。
主要的结构体和组件包括:
1. objc_class(类结构体)123456789101112struct objc_class { Class isa; ...
🔗 LeetCode 242 - Valid Anagram
📌 题目描述:给定两个字符串 s 和 t,编写一个函数来判断 t 是否是 s 的字母异位词。
字母异位词的定义:如果两个字符串中的字母出现的频率相同且字符完全一致,那么这两个字符串是字母异位词。
💡 解题思路:• 将两个字符串 s 和 t 的字母出现频次统计出来,若两个字符串的字母频次完全相同,则它们是字母异位词。
• 通...
Block 内存管理 & 循环引用分析1. Block 的结构体本质Block 在底层其实是一个结构体:
12345678struct Block_literal { void *isa; // 指向 Block 类对象 int flags; // 标志位(是否有 copy/di...
🔗 LeetCode 20 - Valid Parentheses
📌 题目描述给定一个只包括 '(', ')', '{', '}', '[', ']' 的字符串 s,判断字符串是否是有效的。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序...
Block 分类、变量捕获与作用域一、Block 的分类Block 在 Objective-C 中,根据其存储位置和生命周期分为以下三类:
Block 类型
存储位置
特点说明
Global Block
全局区
不捕获外部变量
Stack Block
栈上
捕获外部变量,随栈帧销毁
Heap Block
堆上
捕获外部变量,Block_copy 后存在堆上
示例:12...
🔗 LeetCode 232 - Implement Queue using Stacks
📌 题目描述:使用两个栈 stackIn 和 stackOut 实现一个队列,支持以下操作:
push(x):将元素 x 推到队列的末尾
pop():移除队列开头的元素并返回
peek():返回队列开头的元素
empty():返回队列是否为空
要求:只能使用栈的标准操作(push, pop, ...
View 布局流程详解一、布局流程总览iOS 的视图布局流程由 UIKit 管理,核心遵循「从父到子、从外向内」的递归更新方式。涉及的关键方法有:
layoutSubviews:真正进行子视图位置布局的地方
setNeedsLayout:标记视图为需要重新布局
layoutIfNeeded:立即强制布局
布局流程如下:属性变化(如 frame)或手动触发↓调用 setNeedsLayou...