需求:
对MJRrefresh进行一层基础封装,实现多种方法并可在全局调用。在MJRrefresh加载数据完成后返回分页页码
方法:
为UIScrollView添加基于MJRefresh的分类(Category)。由于Category中使用 @property
并不能在分类中正确创建实例变量和存取方法。
在Runtime中,objc_class结构体大小是固定的,不可能往这个结构体中添加数据,只能修改。所以ivars指向的是一个固定区域,只能修改成员变量值,不能增加成员变量个数。methodList是一个二维数组,所以可以修改*methodLists的值来增加成员方法,虽没办法扩展methodLists指向的内存区域,却可以改变这个内存区域的值(存储的是指针)。因此,可以动态添加方法,不能添加成员变量。
需利用runtime关联对象的特性为分类添加页码(pageIndex)属性
代码:
.h文件
#import <UIKit/UIKit.h>
@interface UIScrollView (MJRefreshEX)
/**
上拉加载
@param automaticallyRefresh 是否自动加载
@param loadMoreBlock 加载回调
*/
- (void)addFooterWithAutomaticallyRefresh:(BOOL)automaticallyRefresh loadMoreBlock:(void(^)(NSInteger pageIndex))loadMoreBlock;
// 其他方法...
@end</