news 2026/4/17 20:48:28

【大前端】【iOS】iOS Objective-C 速成指南(工程实战向)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【大前端】【iOS】iOS Objective-C 速成指南(工程实战向)

下面给一份iOS Object-C(Objective-C)速成篇,定位是:给有开发经验(如 Android / RN / 前端)的工程师,快速能看懂、能写、能维护 iOS OC 代码


一、OC 是什么?一句话理解

Objective-C = C 语言 + Smalltalk 风格的消息机制 + iOS 运行时

特点:

  • 编译期弱,运行时强(Runtime)

  • 一切都是对象发消息

  • 语法啰嗦,但底层能力极强


二、基本语法速通

1️⃣ 类的定义

.h(头文件)

@interface Person : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, assign) NSInteger age; - (void)sayHello; @end

.m(实现文件)

@implementation Person - (void)sayHello { NSLog(@"Hello, my name is %@", self.name); } @end

2️⃣ 创建对象

Person *p = [[Person alloc] init]; p.name = @"Tom"; p.age = 18; [p sayHello];

[]给对象发消息,不是函数调用


三、方法 & 消息机制(重点)

1️⃣ OC 方法长这样

- (void)loginWithUser:(NSString *)user password:(NSString *)pwd;

调用:

[self loginWithUser:@"tom" password:@"123456"];

👉参数是方法名的一部分


2️⃣ 类方法 vs 实例方法

+ (void)classMethod; // 类方法 - (void)instanceMethod; // 实例方法

调用:

[Person classMethod]; [p instanceMethod];

四、常用数据类型(必会)

1️⃣ NSString

NSString *str = @"Hello"; NSString *s2 = [NSString stringWithFormat:@"%@ World", str];

2️⃣ NSArray / NSMutableArray

NSArray *arr = @[@"a", @"b"]; NSMutableArray *mArr = [NSMutableArray array]; [mArr addObject:@"c"];

3️⃣ NSDictionary

NSDictionary *dict = @{ @"name": @"Tom", @"age": @18 };

五、属性 & 内存管理(核心)

1️⃣ property 修饰符(必背)

@property (nonatomic, strong) NSObject *obj; @property (nonatomic, copy) NSString *name; @property (nonatomic, weak) id delegate; @property (nonatomic, assign) NSInteger count;
修饰符用途
strong持有对象
weak防止循环引用(delegate)
copyNSString / block
assign基本类型

👉90% 情况:

  • NSString →copy

  • delegate →weak


2️⃣ ARC(自动内存管理)

现在几乎不用手写retain/release

但要理解:

  • strong ↔ retain

  • weak → 自动置 nil

  • block 默认强引用外部对象


六、Block(相当于 Java Lambda)

1️⃣ 定义 block

void (^myBlock)(int) = ^(int a) { NSLog(@"%d", a); };

2️⃣ 作为参数

- (void)request:(void(^)(BOOL success))callback;

调用:

[self request:^(BOOL success) { NSLog(@"done"); }];

3️⃣ Block 循环引用

__weak typeof(self) weakSelf = self; self.block = ^{ [weakSelf doSomething]; };

七、协议 & Delegate(iOS 灵魂)

1️⃣ 定义协议

@protocol LoginDelegate <NSObject> - (void)loginSuccess; @end

2️⃣ 使用

@property (nonatomic, weak) id<LoginDelegate> delegate;

调用:

[self.delegate loginSuccess];

👉等价于 Android 的接口回调


八、Category(给类加方法)

@interface NSString (Utils) - (BOOL)isNotEmpty; @end
@implementation NSString (Utils) - (BOOL)isNotEmpty { return self.length > 0; } @end

调用:

[@"abc" isNotEmpty];

⚠️不能加成员变量


九、Runtime(高级但常见)

1️⃣ 核心概念

  • 方法 = 消息

  • 方法查找是运行时完成

  • 可以交换方法(Hook)

2️⃣ 方法交换(常见于埋点 / 防 crash)

Method m1 = class_getInstanceMethod(self, @selector(viewDidLoad)); Method m2 = class_getInstanceMethod(self, @selector(xxx_viewDidLoad)); method_exchangeImplementations(m1, m2);

十、UIViewController 生命周期(必背)

- (void)viewDidLoad; - (void)viewWillAppear:(BOOL)animated; - (void)viewDidAppear:(BOOL)animated; - (void)viewWillDisappear:(BOOL)animated; - (void)viewDidDisappear:(BOOL)animated;

对应 Android:

  • onCreateviewDidLoad

  • onResumeviewDidAppear


十一、常见开发模式

MVC(iOS 官方)

  • Model

  • View

  • Controller(很容易写成巨无霸)

MVVM(现在主流)

  • Controller 轻

  • ViewModel 处理逻辑

  • 配合 ReactiveCocoa / RxSwift


十二、你只要记住的 10 句话

  1. OC 是发消息

  2. []不是数组,是方法调用

  3. NSString 用copy

  4. delegate 用weak

  5. Block 会强引用

  6. Category 不能加成员变量

  7. 一切 UI 在主线程

  8. Runtime 是 iOS 黑魔法

  9. ViewController 很重要

  10. 新项目优先 Swift,但老项目大量 OC


十三、学习路线(1 周上手)

Day 1

  • OC 基础语法

  • property / block / delegate

Day 2

  • UIView / UIViewController

  • 生命周期

Day 3

  • 网络请求(AFNetworking)

  • JSON → Model

Day 4

  • Runtime / Category

  • Method Swizzling

Day 5

  • 项目实战 + Debug


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 12:33:40

Python - 诊断和修复内存泄漏

内存泄漏是指程序错误地管理内存分配&#xff0c;导致可用内存减少&#xff0c;并可能导致程序变慢或崩溃。 在 Python 中&#xff0c;内存管理通常由解释器处理&#xff0c;但内存泄漏仍然可能发生&#xff0c;尤其是在长时间运行的应用中。在 Python 中诊断和修复内存泄漏需…

作者头像 李华
网站建设 2026/4/18 5:40:38

什么叫组团社,什么叫地接社

在旅游行业中&#xff0c;有两个重要的角色&#xff1a;组团社与地接社&#xff0c;它们分别承担着不同的职责。 组团社&#xff0c;也被称为国内旅游批发商&#xff0c;其主要功能是接受旅游团或海外旅行社的预订。 它们负责制定并下达接待计划&#xff0c;甚至可以提供全程陪…

作者头像 李华
网站建设 2026/4/18 0:38:06

8大关键技术点掌握YashanDB的使用技巧

如何优化查询速度是数据库系统设计和运维中的重要问题&#xff0c;影响着业务响应时间和系统吞吐能力。高效的数据存储、合理的索引设计、智能的执行计划生成以及高并发事务控制技术&#xff0c;均直接关系到查询性能表现。本文围绕YashanDB数据库系统&#xff0c;深入剖析其八…

作者头像 李华
网站建设 2026/4/18 10:01:13

Kubernetes Service 架构深度解析:从虚拟IP到流量的智能寻址

在Kubernetes中&#xff0c;Pod间的直接互联仅是服务通信的基础。要构建一个稳定、弹性且对消费端透明的服务网络&#xff0c;其核心在于Service抽象层。许多开发者对Service的理解仅停留在“一个虚拟IP”的层面&#xff0c;却未能洞悉其背后精妙的流量治理机制&#xff1a;请求…

作者头像 李华
网站建设 2026/4/18 11:26:23

一个免费的在线拼图工具Collaigo

创作背景在社交媒体时代&#xff0c;无论是个人分享生活点滴&#xff0c;还是品牌运营社交媒体账号&#xff0c;拼贴图都成为了内容创作的重要形式。然而&#xff0c;我在使用现有工具时遇到了不少痛点&#xff1a;功能限制&#xff1a;很多工具只能做简单的网格拼图&#xff0…

作者头像 李华
网站建设 2026/4/16 22:49:52

【学习心得】Python好库推荐——pyttsx3

pyttsx3&#xff08;Python Text-to-Speech eXtended version 3&#xff09;是一个跨平台的 Python 库&#xff0c;用于将文本转换为语音&#xff08;Text-to-Speech, TTS&#xff09;。它可以在不依赖互联网连接的情况下&#xff0c;在本地将文本朗读出来&#xff0c;支持 Win…

作者头像 李华