RAC +MVVM
https://blog.csdn.net/capf_sam/article/details/60960530
https://blog.csdn.net/capf_Sam/article/details/60960615
http://www.cocoachina.com/ios/20170612/19500.html
//响应式 <ReactiveObjc.h>
[[XXX rac_signalForSelector] subscribeNext:^(RACTuple * x){}];
[self.searchText.rac_textSignal subscribeNext: ^(id text){ NSLog(@"%@", text); }];
//KVO <NSObject + RACKVOWrapper.h>
[XXX rac_observerKeyPath: options: observer: block:];
MMTableViewModel
MaterialViewModel
//响应式 <ReactiveObjc.h>
[[XXX rac_signalForSelector] subscribeNext:^(RACTuple * x){}];
//KVO <NSObject + RACKVOWrapper.h>
[XXX rac_observerKeyPath: options: observer: block:];
//
[xxx rac_valuesForKeyPath: observer:];
//监听事件
[[btn rac_singalForControlEvents:] subscribeNext:]
//通知
[[NSNotificationCenter defaultCenter]rac_addObserverForName: object:] subscribeNext:];
//textfield 输入监听
[_textField.rac_textSignal subscribeNext:^(NSString *x){}];
1.RACSignal:信号类
创建信号:冷信号
RACSingal *signal = [RACSignal createSignal:^()]
订阅信号:热信号 RACSubcriber-发送信号
取消订阅 RACDispose
2,RACSubject:可创建信号,也可发送信号
RAC 宏
// RAC:把一个对象的某个属性绑定一个信号,只要发出信号,就会把信号的内容给对象的属性赋值 // 给label的text属性绑定了文本框改变的信号 RAC(self.label, text) = self.textField.rac_textSignal; // [self.textField.rac_textSignal subscribeNext:^(id x) { // self.label.text = x; // }];
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!