宏的使用
1.在 MJRefreshConst.h 中
#define MJWeakSelf __weak typeof(self) weakSelf = self;
使用直接 MJWeakSelf 声明 weakSelf
2.开发中DEBUG模式下的日志输出
// 日志输出
#ifdef DEBUG
#define MJRefreshLog(...) NSLog(__VA_ARGS__)
#else
#define MJRefreshLog(...)
#endif
** VA_ARGS **是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的. 可用来定义可变参数
3.用来提醒方法过期的宏
#define MJRefreshDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
解释说明:
引用地址:Joe
宏NS_DEPRECATED是定义在NSObjcRuntime.h文件中,其具体定义如下。
[code="Objc"]
#define NS_DEPRECATED(_macIntro, _macDep, _iosIntro, _iosDep, ...) CF_DEPRECATED(_macIntro, _macDep, _iosIntro, _iosDep, __VA_ARGS__)
[/code]
一般紧接在function的后面,用来标记该function被弃用,将来可能会被移除。但被弃用,并不是不能继续使用该function,在该方法被真正移除之前,仍然是可用的。不过使用后,编译器会产生一个关于方法被弃用的告警。
其中
1. CF_DEPRECATED,引用自 #include 。
2. _macIntro,指定方法首次引入的MAC OSX 系统版本,
_macDep,指定方法首次弃用的MAC OSX 系统版本,
_iosIntro,指定方法首次引入的iOS系统版本,
_iosDep,指定方法首次弃用的iOS系统版本。
...,其他的参数。一般都是对该方法弃用的文本注解,比如弃用的原因,比如替代的方法。
eg:
在 UIScrollView+MJRefresh.h中
@property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header");
MJ添加了mj_开头来防止冲突(OC没有命名空间的概念)
4.常用的用法
UIKIT_EXTERN const CGFloat MJRefreshLabelLeftInset;
const CGFloat MJRefreshLabelLeftInset = 25;
UIKIT_EXTERN NSString *const MJRefreshKeyPathContentOffset;
NSString *const MJRefreshKeyPathContentOffset = @"contentOffset";
开发的时候经常会用到一些全局的常量eg:64,20,44等等,可以单独定义出来,系统也是这么干的eg:
UIKIT_EXTERN const CGFloat UIScrollViewDecelerationRateNormal NS_AVAILABLE_IOS(3_0);
UIKIT_EXTERN const CGFloat UIScrollViewDecelerationRateFast NS_AVAILABLE_IOS(3_0);