2026/1/11 7:32:26
网站建设
项目流程
asp 开发的大型网站,要制作网页,文山网站建设哪家好,烟台网页制作下面给一份 iOS Object-C#xff08;Objective-C#xff09;速成篇#xff0c;定位是#xff1a;给有开发经验#xff08;如 Android / RN / 前端#xff09;的工程师#xff0c;快速能看懂、能写、能维护 iOS OC 代码。一、OC 是什么#xff1f;一句话理解Objective-C…下面给一份iOS Object-CObjective-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); } end2️⃣ 创建对象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️⃣ NSStringNSString *str Hello; NSString *s2 [NSString stringWithFormat:% World, str];2️⃣ NSArray / NSMutableArrayNSArray *arr [a, b]; NSMutableArray *mArr [NSMutableArray array]; [mArr addObject:c];3️⃣ NSDictionaryNSDictionary *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防止循环引用delegatecopyNSString / blockassign基本类型90% 情况NSString →copydelegate →weak2️⃣ ARC自动内存管理现在几乎不用手写retain/release但要理解strong ↔ retainweak → 自动置 nilblock 默认强引用外部对象六、Block相当于 Java Lambda1️⃣ 定义 blockvoid (^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]; };七、协议 DelegateiOS 灵魂1️⃣ 定义协议protocol LoginDelegate NSObject - (void)loginSuccess; end2️⃣ 使用property (nonatomic, weak) idLoginDelegate delegate;调用[self.delegate loginSuccess];等价于 Android 的接口回调八、Category给类加方法interface NSString (Utils) - (BOOL)isNotEmpty; endimplementation NSString (Utils) - (BOOL)isNotEmpty { return self.length 0; } end调用[abc isNotEmpty];⚠️不能加成员变量九、Runtime高级但常见1️⃣ 核心概念方法 消息方法查找是运行时完成可以交换方法Hook2️⃣ 方法交换常见于埋点 / 防 crashMethod 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;对应 AndroidonCreate→viewDidLoadonResume→viewDidAppear十一、常见开发模式MVCiOS 官方ModelViewController很容易写成巨无霸MVVM现在主流Controller 轻ViewModel 处理逻辑配合 ReactiveCocoa / RxSwift十二、你只要记住的 10 句话OC 是发消息[]不是数组是方法调用NSString 用copydelegate 用weakBlock 会强引用Category 不能加成员变量一切 UI 在主线程Runtime 是 iOS 黑魔法ViewController 很重要新项目优先 Swift但老项目大量 OC十三、学习路线1 周上手Day 1OC 基础语法property / block / delegateDay 2UIView / UIViewController生命周期Day 3网络请求AFNetworkingJSON → ModelDay 4Runtime / CategoryMethod SwizzlingDay 5项目实战 Debug