MJRefresh的一些宏定义

宏的使用

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);

你可能感兴趣的:(MJRefresh的一些宏定义)