• Day6-删除有序数组中的重复项

    🔗 LeetCode 26 - Remove Duplicates from Sorted Array 📌 题目描述给你一个 升序排列 的数组 nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 O(1) 额外空间的条件下原地修改输入数组。 示例: 12输入: nums = [1,1,2]输出: 2, nums = [1,...
  • Day6-Runtime 实战技巧

    一、定义Runtime 是什么? Objective-C 的 Runtime 实际上是 C 语言的一套函数和类库,用于支持 Objective-C 编程语言的动态性,包括类的创建、方法调用、属性访问等。 二、Runtime 实战技巧1.Method Swizzling(方法交换)1. 什么是 Method Swizzling? 定义:在程序运行时,交换两个方法实现的过程。 本质:修改方...
  • Day5-两数之和 II - 输入有序数组

    🔗 LeetCode 167 - Two Sum II - Input Array Is Sorted 📌 题目描述给定一个已按升序排列的整数数组 numbers 和一个目标值 target,请你在数组中找出两个数,使得它们的和为目标值 target,并返回这两个数的下标。 注意: 返回的答案是一个 1 索引的数组。 假设每个输入只对应一个答案,且你不可以重复使用数组中的元素。 ...
  • Day5-Objective-C Runtime 基础结构

    Objective-C Runtime 基础结构Objective-C 运行时系统(Runtime)是 Objective-C 语言的核心部分,它在程序运行期间负责管理类、对象、方法调用等行为。 主要的结构体和组件包括: 1. objc_class(类结构体)123456789101112struct objc_class { Class isa; ...
  • Day4-有效的字母异位词

    🔗 LeetCode 242 - Valid Anagram 📌 题目描述:给定两个字符串 s 和 t,编写一个函数来判断 t 是否是 s 的字母异位词。 字母异位词的定义:如果两个字符串中的字母出现的频率相同且字符完全一致,那么这两个字符串是字母异位词。 💡 解题思路:• 将两个字符串 s 和 t 的字母出现频次统计出来,若两个字符串的字母频次完全相同,则它们是字母异位词。 • 通...
  • Day4-Block 内存管理 & 循环引用分析

    Block 内存管理 & 循环引用分析1. Block 的结构体本质Block 在底层其实是一个结构体: 12345678struct Block_literal { void *isa; // 指向 Block 类对象 int flags; // 标志位(是否有 copy/di...
  • Day3-有效的括号

    🔗 LeetCode 20 - Valid Parentheses 📌 题目描述给定一个只包括 '(', ')', '{', '}', '[', ']' 的字符串 s,判断字符串是否是有效的。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序...
  • Day3-Block 分类、变量捕获与作用域

    Block 分类、变量捕获与作用域一、Block 的分类Block 在 Objective-C 中,根据其存储位置和生命周期分为以下三类: Block 类型 存储位置 特点说明 Global Block 全局区 不捕获外部变量 Stack Block 栈上 捕获外部变量,随栈帧销毁 Heap Block 堆上 捕获外部变量,Block_copy 后存在堆上 示例:12...
  • Day2-用栈实现队列

    🔗 LeetCode 232 - Implement Queue using Stacks 📌 题目描述:使用两个栈 stackIn 和 stackOut 实现一个队列,支持以下操作: push(x):将元素 x 推到队列的末尾 pop():移除队列开头的元素并返回 peek():返回队列开头的元素 empty():返回队列是否为空 要求:只能使用栈的标准操作(push, pop, ...
  • Day2-View 布局流程

    View 布局流程详解一、布局流程总览iOS 的视图布局流程由 UIKit 管理,核心遵循「从父到子、从外向内」的递归更新方式。涉及的关键方法有: layoutSubviews:真正进行子视图位置布局的地方 setNeedsLayout:标记视图为需要重新布局 layoutIfNeeded:立即强制布局 布局流程如下:属性变化(如 frame)或手动触发↓调用 setNeedsLayou...
13456