/重写转发微博View的get方法 懒加载,实现了转发微博view复用
// 懒加载就是在程序运行后,不是一下子加载很多的控件,而是后期需要的时候再复用
// 懒加载的形式是重写get方法的同时,里面进行判断跟着 if(obj==nil),这种形式
// 这里的转发的微博view也要考虑view的复用问题
-(LYWeiboView *)reWeiboView{
// if里面判断进行的时候要写成_reWeiboView,如果写self.reWeiboView,它属于_eWeiboView的get方法,get方法里面用属性的get方法取值判断会进入死循环,所以这里重写get方法时候一定要用_reWeiboView来判断是否存在
// 注意:_reWeiboView == nil , 整体是一个get方法,
// self.reWeiboView = ,属于set方法;
if (_reWeiboView == nil) {
// 现创建一个,滴哦用的时候赋值时再定Fram
_reWeiboView = [[LYWeiboView alloc]initWithFrame:CGRectZero];
[self addSubview:_reWeiboView];
self.reWeiboView.backgroundColor = LYGrayColor;
}
return _reWeiboView;
}
// ---------------------- 功能分区 -----------------------------
// [LYSinaUtils requestWeibosWithParams:params Callback:^(id obj) {
// // 请求回来的数据是一个大数组
// self.weibos = obj;
// // 此block是LYSinaUtils调用的方法,block里用其他对象调方法不会报错警告,如果此block方法是用tableView调用的,就会报错,报错的时候就在block方法外边用“__block”修饰一下
// [tableView reloadData];
// }];
// ---------------------- 功能分区 -----------------------------
/*
// 等号右边的永远是fet方法,下面的self.params属于调用get方法,self.params.count属于set方法,一个等号左边最近的属性调用的是set方法
self.params.count=@(3);
*/
// __block typeof(self) weakSelf = self;
// __block LYHomeViewController *weakSelf = self;
// *** __block这里就记住,当block里要是访问属性,可能会出现报错,直接记住在外边加上__block修饰一下就好了
//添加上拉加载和下拉刷新 在block中访问变量时 会导致内存计数+1 从而可能会引起 对象释放不掉
// __weak 和 __block 都可以使变量在block中使用时 内存计数不加1
//添加下拉刷新事件
[tableView addPullToRefreshWithActionHandler:^{
//刷新的时候如果有数据,判断当前有没有微博数据。
if (self.weibos.count>0) {
// 找到微博数据数组里的第一个[0]的就是最新的用户发的微博id
LYWeibo *weibo = self.weibos[0];
//获取比自己最新微博 更新微博
self.params.since_id = weibo.wid;
}
[LYSinaUtils requestWeibosWithParams:self.params Callback:^(id obj) {
// 下面添加的时候系统不知道obj是什么,提前用数组接住
NSArray *newWeibos = obj;
//把请求到的新的数据插入到数组的最前面
[self.weibos insertObjects:obj atIndexes:[NSIndexSetindexSetWithIndexesInRange:NSMakeRange(0, newWeibos.count)]];
[self.tableView reloadData];
//结束下拉刷新动画
[self.tableView.pullToRefreshView stopAnimating];
}];
}];
//添加上拉加载事件
[tableView addInfiniteScrollingWithActionHandler:^{
//如果是上拉加载 不能设置since_id不然拿不到数据
// 如设置了since_idyou参数,系统就会去请求最新的数据,而不是加载之前的数据
self.params.since_id = nil;
//设置请求页数
self.params.page = @(self.params.page.intValue+1);
//上拉加载
[LYSinaUtils requestWeibosWithParams:self.params Callback:^(id obj) {
//把获取到的微博数组追加到数据源数组中
[self.weibos addObjectsFromArray:obj];
[self.tableView reloadData];
//结束上拉加载动画
[self.tableView.infiniteScrollingView stopAnimating];
}];
}];
//触发下拉刷新
[self.tableView triggerPullToRefresh];
转载于:https://www.cnblogs.com/lanyisanqqi/p/5218408.html
相关资源:DirectX修复工具V4.0增强版