UIView动画
使用
[UIView animateWithDuration:...]
执行动画改变view期间不宜重新加载view中的数据,尤其是有滑动操作的时候。(比如UITableView、UICollectionView等,最好在动画执行之前重载数据。)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//最好在这里执行reloadData
[self.tableView reloadData];
[UIView animateWithDuration:0.4 animations:^{
self.tableView.contentOffset = CGPointZero;
self.tableView.frame = CGRectMake(0, 100, 414, 500);
}];
//在这里执行reloadData容易crash
[self.tableView reloadData];
}
设置挡住导航栏的半透明背景
UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow;
[currentWindow addSubview:backgroundView];
内存泄漏有两种:第一是真正的内存泄漏,一个对象尚未被释放,但是已经不在被引用了;第二类泄漏比较麻烦些,就是所谓的“无界内存增长“,就是内存还在继续分配,但是永远没有机会释放。如果一直这样下去,你的程序占用内存将会无限大,最终被系统的看门狗给kill掉。
//第一次调用此方法时不会从复用池取已有cell,而是新建cell并且新加一个复用ID;
//[self.tableView reloadData]是从复用池取出
[self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]]
withRowAnimation:UITableViewRowAnimationFade];