在编程领域里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器在遇到宏时会自动进行这一模式替换。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
在RAC框架中,其宏定义的功能强大能帮助开发者更加快速、便捷地进行开发工作。常用的比如:打破循环引用、以及KVO方法的属性监听等等。

打破循环引用
KVO方法的属性监听

宏的强大之处:
最长用的@weakify(self)

weakify(…)实现
此处注意,反斜杠\的作用是作为连接符使用,将代码进行连接,即使用
weakify(…)宏定义时,将先后执行rac_keywordifymetamacro_foreach_cxt(rac_weakify_,, __weak, __VA_ARGS__) 代码。
先看下rac_keywordify代码的作用:

在debug环境下,只有一句autoreleasepool {},此代码是增强代码的编译能力,至于为何要如此使用?在经常使用的宏定义RACObserve(TARGET, KEYPATH)观察KVO属性时,能够在KEYPATH中,代码预提示出指定TARGET中的属性

RACObserve能够提示出当前self中存在的实例变量

参考文章

RAC(ReactiveCocoa)之 RAC宏定义相关推荐

  1. 了解RAC(ReactiveCocoa)

    原文: 一.RAC(ReactiveCocoa)介绍 1.基本介绍 https://www.jianshu.com/p/74f1ea777017 例子:https://download.csdn.ne ...

  2. RAC(ReactiveCocoa)使用方法(一)

    RAC(ReactiveCocoa)使用方法(一) RAC(ReactiveCocoa)使用方法(二) 什么是RAC? 最近回顾了一下ReactiveCocoa的方法,也看了一些人的文章,现写篇文章总 ...

  3. RAC(ReactiveCocoa)使用方法(二)

    RAC(ReactiveCocoa)使用方法(一) RAC(ReactiveCocoa)使用方法(二) 上篇文章:RAC(ReactiveCocoa)使用方法(一) 中主要介绍了一些RAC中常见类的用 ...

  4. C++ #define(宏定义)的使用

    C++ 宏定义 #define命令是C++语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 宏定义的一般形式 #define <宏名& ...

  5. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

  6. c 宏定义用法#define

    转自:https://blog.csdn.net/boring_wednesday/article/details/78756696 宏定义 语法     #define name Stuff #de ...

  7. C语言宏定义使用技巧

    写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H ...

  8. 【C语言】07-预处理指令;-宏定义

    预处理指令简介; 1,C在对源程序进行编译之前,会对一些特殊的预处理指令作解释,产生一个新的源程序,此过程叫做编译预处理.C在经过编译预处理之后才对新的源码进行通常的编译; 2,预处理以'#'开头,且 ...

  9. 巧用宏定义进行调试 (转)

    巧用宏定义进行调试 在进行程序设计时,有时我们往往不希望借住于调试工具(如:gdb, vc),而以输出调试信息的方式进行调试时,我们就可以借住于强大的宏定义来进行调试.    一.在GCC下的定义方法 ...

最新文章

  1. 获取系统时间精确到毫秒级C++代码实现
  2. 实现影响力的三个核心要素
  3. spring源码 — 一、IoC容器初始化
  4. struts2.1.6教程二、struts.xml配置及例程
  5. VS2015启动调试程序变慢
  6. python tk mainloop原理_理解Tkinter mainloop()的逻辑以及为什么变量没有重新分配它们的原始值?...
  7. php 微信时间戳转换工具,微信小程序时间戳转换
  8. VS2012连接数据库问题
  9. PolarDB · 新品介绍 · 深入了解阿里云新一代产品 PolarDB
  10. android 坡度计算器,坡度换算角度计算器(坡度计算器)
  11. css3 模拟fadein,CSS3 transition fadein with display:none
  12. [BJDCTF 2nd] 燕言燕语-y1ng
  13. Element的Cascader 级联选择器禁用和回显问题
  14. google中国android文档官网地址
  15. 读《Analyzing Unaligned Multimodal Sequence via Graph Convolution and Graph Pooling Fusion》
  16. 你好,C++(29)脚踏两只船的函数不是好函数 5.4 函数设计的基本规则
  17. underscore可能存在的问题
  18. 算法中的基础数学知识(一)—初等数论
  19. 第08课时_三极管恒流源电路
  20. 物联网竞赛网络链路系统问题总结

热门文章

  1. css实现滚动条美化功能
  2. Matlab中运算符优先级
  3. Java爬虫:对猫眼电影进行信息采集并存入Excel
  4. 如何解决磁盘坏道的问题
  5. 将0.1101101*2^(-10)表示成阶码用4位移码、尾数用8位原码(含符号位)的浮点数
  6. Python计时工具
  7. 3G到底有多快 三家运营商3G网速大比拼
  8. 一加手机怎么导出照片_怎样从云服务导出相片 云端备份照片怎么导出
  9. 大学生计算机设计大赛 梧州学院,我校学子在2018年中国大学生计算机设计大赛中勇摘桂冠...
  10. 工具篇(四)基于WPS的数据处理和分析