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