news 2026/5/1 11:06:29

【大前端】【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/5/1 6:48:48

Python编程语言面试问题一

Python是一种跨平台、开源、免费的高级动态编程语言&#xff0c;由荷兰的吉多范罗苏姆于1990年代初设计。Python具有简单、易学、速度快、免费、开源、可移植性、可扩展性、丰富的库等优点。 这些Python编程语言面试问题专门设计&#xff0c;旨在帮助你了解在Python编程语言面…

作者头像 李华
网站建设 2026/4/30 9:58:55

STM32F103ZET6 + W5500编程遇到的问题与解决过程

W5500是韩国公司WIZNET出品的爆款网络芯片&#xff0c;它集成了TCP/IP协议栈和以太网PHY接口&#xff0c;能让不具备网络功能的单片机通过 SPI 接口便捷地实现上网功能&#xff0c;目前国内兼容的芯片有沁恒公司的CH394。我最近开发的一款数据采集卡产品就是使用STM32F103ZET6W…

作者头像 李华
网站建设 2026/5/1 8:02:49

毕业季必看!9款免费AI论文神器实测,真实参考文献+AIGC率低至10%

如果你是正在熬夜赶Deadline的毕业生&#xff0c;面对堆积如山的文献资料和空白的文档一筹莫展&#xff1b;如果你是面临延毕压力的研究生&#xff0c;导师催稿的消息不断弹出&#xff0c;而自己的论文却始终难以达到要求&#xff1b;如果你是囊中羞涩的大学生&#xff0c;知网…

作者头像 李华
网站建设 2026/5/1 8:01:28

研究生必备:7款AI论文神器,真实文献查重率低,原创度高!

如果你是正在面临延毕危机的研究生&#xff0c;整日被导师催着交稿&#xff0c;在浩如烟海的文献里苦苦搜寻资料&#xff0c;为论文的初稿、修改和查重等问题愁得焦头烂额&#xff1b;又或者你是经济不宽裕的大学生&#xff0c;面对知网查重的高昂费用只能望而却步&#xff0c;…

作者头像 李华
网站建设 2026/4/29 19:38:23

计算机视觉测试框架与典型场景实践

一、计算机视觉测试概述 随着深度学习技术在图像识别、目标检测、场景理解等领域的广泛应用&#xff0c;计算机视觉系统已渗透到自动驾驶、医疗影像、工业质检、安防监控等多个关键领域。与传统软件测试相比&#xff0c;视觉系统测试面临数据依赖性、算法不确定性、环境敏感度…

作者头像 李华