1. 在方法裏面定義的Block是存儲在棧區的,方法調用完畢以後Block佔用的內存就會被銷燬.若是須要在其餘方法裏面使用該Block須要把Block定義成屬性,修飾成copy,這樣 就會把棧區的內容拷貝一份到堆區.app
2. 解決Block的內存循環引用問題.spa
當一個對象對Block持有全部權.在Block又使用該對象的內容(self或者該對象的實例變量),會致使Block的內存循環引用 解決方案,在ARC中用__weak修飾該指針, 在MRC中用__Block修飾該指針.指針
//點擊cell跳轉時觸發
// In a storyboard-based application, you will often want to do a little preparation before navigation對象
在使用storyBoard時進行傳值是的操做.索引
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//獲得目的視圖
DetailViewController * detailVC = [segue destinationViewController];
//獲得點擊的cell
ContactTableViewCell * cell = sender;
//獲得索引值
NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
//傳值.
detailVC.string = [self.MArray objectAtIndex:indexPath.row];
__weak ContactTableViewCell *cellTwo = cell;
__weak DetailViewController *detailTwoVC = detailVC;
[detailTwoVC showTFStringBlock:^(NSString *str) {
//給cell賦值.
cellTwo.aLabel.text = str;
//在MRC下用__BLock解決循環引用問題防止引用計數加1, 在ARC環境下用__weak解決循環引用問題,防止cell,detailVC所持有的對象引用計數加一.
detailTwoVC.view.backgroundColor = [UIColor redColor];
}];
}內存